Seite 1 von 1

DCMENUBAR und Parameter [ERLEDIGT]

Verfasst: Mi, 27. Feb 2019 9:26
von Manfred
Hi,
kann es ein, das man bei DCMENUBAR verschiedene Parameter z.B. MENUBARFONT gar nicht mit Var belegen kann, sondern direkt den Text in "" eingeben muß?
das hier wird nicht kompiliert. Es wird gemeckert beim Menubarfont. Sobald ich das aber gegen "font" austausche, wird das akzeptiert. Gleiches gilt übrigens auch für Angaben weiter unten

Code: Alles auswählen

DCMENUBAR ::oMenuBar;
              ID 999;
    MENUBARCOLOR oSysPara:doParaWS:menubarcolorfg,oSysPara:doParaWS:menubarcolorbg;
     MENUBARFONT oSysPara:doParaWS:menubarfont;
       OWNERDRAW;
     SUBBARCOLOR oSysPara:doParaWS:subbarcolorfg,oSysPara:doParaWS:subbarcolorbg;
      SUBBGCOLOR oSysPara:doParaWS:subbgcolor;
    SUBCHECKFONT oSysPara:doParaWS:subcheckfont;
      SUBFGCOLOR oSysPara:doParaWS:subfgcolor;
     SUBITEMFONT oSysPara:doParaWS:subitemfont

Re: DCMENUBAR und Parameter

Verfasst: Mi, 27. Feb 2019 9:32
von Tom
Das liegt am Variablennamen "oSysPara:doParaWS:menubarfont;". Schau Dir mal an, was der PP daraus macht. "menubarfont" wird im Kommando "DCMENUBAR" eben ersetzt, da darfst Du keine Variable dieses Namens im Kommando verwenden. Ansonsten geht das selbstverständlich mit Variablen, Funktionsergebnissen, was weiß ich.

Re: DCMENUBAR und Parameter

Verfasst: Mi, 27. Feb 2019 10:45
von Manfred
auja Tom,
jetzt wo Du es erwähnst. Das prüfe ich mal.
Saublöder Fehler (wenn er es denn dann war)

Re: DCMENUBAR und Parameter [ERLEDIGT]

Verfasst: Mi, 27. Feb 2019 14:03
von Manfred
Hast recht Tom, das war es tatsächlich. Hätte ich jetzt nicht vermutet.

Re: DCMENUBAR und Parameter [ERLEDIGT]

Verfasst: Mi, 27. Feb 2019 14:33
von Tom
Der PP ist ein kluger Textparser, aber er kennt die Sprache nicht wirklich. Ich glaube, Xbase++ ist ihm sogar ziemlich egal. :wink: Ersetzungsregeln definieren Schlüsselwörter, nach denen gesucht werden soll, wobei Leer- und Satzzeichen (dazu gehört der Doppelpunkt) als Trennzeichen interpretiert werden. Also macht der Junge seine Arbeit. In der Ersetzungsregel steht, er soll u.a. das (Schlüssel-)Wort "MENUBARFONT" (der PP arbeitet nicht case-sensitive) suchen und daraus im AADD( DCGUI_GETLIST ...) irgendwo eine Zeile machen, die das enthält, was "MENUBARFONT" folgt, und zwar interpretiert als "cBarFont". Das macht er bei Dir dann zweimal innerhalb einer Zeile, nämlich einmal für das von Dir absichtlich dort hinterlassene Schlüsselwort und einmal für die Objekt-iVar. Daraus entsteht syntaktischer Garbage, und das bemängelt dann der Compiler. Lass einfach über den Quellcode mal Suchen&Ersetzen laufen und "MENUBARFONT" durch "Schnullibulli" ersetzen. Das passiert hier.

Merke. Wenn Du den PP verwendest, sollte innerhalb der Regeln nichts als Bezeichnung für irgendwas verwendet werden, das zugleich ein Schlüsselwort der Regel ist. Und Schlüsselwörter sind in der eXpress++-Kommandoschreibweise alle Klauseln sowie die Kommandos selbst.

Re: DCMENUBAR und Parameter [ERLEDIGT]

Verfasst: Fr, 05. Apr 2019 18:56
von Manfred
ich stelle auch fest, das folgendes überhaupt nicht zu wirken scheint.

Code: Alles auswählen

DCMENUBAR ::oMenuBar;
              ID 999;
    MENUBARCOLOR oSysPara:doParaWS:menubarcolorfg,oSysPara:doParaWS:menubarcolorbg;
     MENUBARFONT oSysPara:doParaWS:fontmenubar;
       OWNERDRAW;
     SUBBARCOLOR oSysPara:doParaWS:subbarcolorfg,oSysPara:doParaWS:subbarcolorbg;
      SUBBARFONT oSysPara:doParaWS:fontsubbar;
      SUBBGCOLOR oSysPara:doParaWS:colorsubbg;
    SUBCHECKFONT oSysPara:doParaWS:fontsubcheck;
      SUBFGCOLOR oSysPara:doParaWS:colorsubfg;
     SUBITEMFONT oSysPara:doParaWS:fontsubitem
Zumindest was die Subxxxx Parameter betrifft. Menubarcolor unf Menubarfont werden angenommen, aber die anderen nicht. Was mache ich da wohl falsch?