Posts mit dem Label Messagebox werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Messagebox werden angezeigt. Alle Posts anzeigen

Freitag, 20. November 2009

Neue extrem parametrisierbare Messagebox für VFP8/9 / New extreme parametric messagebox for VFP8/9

Anatoly Mogylevets hat unter news2news eine FLL veröffentlicht, mit der komplett parametrisierbare Messagebox() Designs ermöglicht werden. Unbedingt mal anschauen!

Hier der Link: http://www.news2news.com/vfp/?solution=3

Mittwoch, 16. April 2008

Undokumentierte Parameterwerte in der Messagebox

Gemäß der FAQs von George Tasker gibt es bei der VFP Messagebox zwei undokumentierte Werte beim zweiten Parameter.

Hierbei handelt es sich um:

#DEFINE MB_SYSTEMMODAL 4096
#DEFINE MB_TASKMODAL 8192

Der Einsatz dieser beiden Werte beeinflußt ausschließlich Modalitätslevel und -bereich des Messagebox-Dialogs.

MB_TASKMODAL (8192) hat üblicherweise einen wenig sichtbaren Effekt auf die Dialogbox. (es handelt sich mehr oder weniger um interne Auswirkungen).

MB_SYSTEMMODAL (4096) hingegen sorgt dafür, daß die Messagebox nicht nur innerhalb der VFP-Applikation im Vordergrund steht, sondern auch vor allen anderen vorgelagerten Fremdapplikationen.

Dienstag, 20. November 2007

Meldungen und Infotexte einfach generieren / Messages and infos concatenated easily

Oftmals stehen wir vor der Aufgabe, einen umfangreichen Informationstext (u.U. gefüllt mit Variablenwerten) in einer Message- oder Editbox auszugeben. 

Am Beispiel einer Fehlermeldung könnte dies vielleicht wie folgt aussehen:
 
FUNCTION ShowError
LPARAMETERS vError, vMessage, vCode, vLine, vObject
MESSAGEBOX([in Zeile ] + TRANSFORM(m.vLine) + [: ] + ALLTRIM(m.vCode) ;
+ CHR(13) + [ist folgender Fehler aufgetreten:] + CHR(13) ;
+ CHR(13) + ALLTRIM(STR(m.vERROR)) + [ - ] + ALLTRIM(m.vMessage) + CHR(13) ;
+ CHR(13) + [Der Fehler trat in folgendem Objekt auf:] ;
+ CHR(13) + ALLTRIM(m.vObject), ;
0+64+0, ;
[Programminformation])
ENDFUNC

Abgesehen davon, dass es eine ziemlich aufwendige Sache ist, den Code so 'übersichtlich' aufzubereiten, muss auch sichergestellt werden, dass sämtliche NICHT-Alfanumerischen Felder ordnungsgemäß in Zeichenfolgen gewandelt werden. 

Zudem ist ein nachträgliches Umformatieren/Ergänzen des Textes eine ziemlich nervige Angelegenheit.

Ein einfacherer Weg einen mit Variablen gespickten Text auszugeben UND diesen ggf. schnell und einfach umzuformatieren besteht im Einsatz von TEXT ... ENDTEXT.  

Nutzen wir diese Funktion von Visual FoxPro so sieht die Welt um ein vielfaches einfacher aus:
 
FUNCTION ShowError 
LPARAMETERS vError, vMessage, vCode, vLine, vObject 
LOCAL cMyVar 
TEXT TO cMyVar NOSHOW ADDITIVE TEXTMERGE PRETEXT 2 
in Zeile <<m.vLine>>: <<m.vCode>> 
ist folgender Fehler aufgetreten: 

<<m.vError>> - <<m.vMessage>> 

Der Fehler trat in folgendem Objekt auf: 
<<m.vObject>> 
ENDTEXT 
ENDFUNC 

Praktischerweise müssen wir uns keine Gedanken mehr über den Variablentyp machen. VFP wandelt alle in '<< >>' stehenden Variablen automatisch in Strings.  

Wichtig ist auf jeden Fall der PRETEXT-Parameter. Hier stehen vier additiv anzugebende Werte zur Verfügung.  

1 Entfernt Leerzeichen am Zeilenanfang  
2 Entfernt Tabulatoren am Zeilenanfang  
4 Entfernt Leerzeilen  
8 Entfernt Zeilenvorschübe  

Sollen nun alle Leerzeichen, TABS und Leerzeilen entfernt werden so wird als Flagwert 7 (-> 1+2+4) übergeben. ( Die Entfernung von Zeilenvorschüben <8> ist nur für Datenströme empfehlenswert da die Lesbarkeit doch ein klein wenig leidet. )