| |
|
|
thb | Ciao, ich möchte gerne aus einer Eingabemaske heraus einen Druck starten (Datenbankanwendung). Nach dem Ausdruck soll der Anwender weitere Eingaben in der Maske machen können. Zuerst hatte ich Probleme mit der zweiten Seite eines mehrseitigen Ausdruckes, hier hat mir das Foro weitergeholfen, ich muss den Befehl Usefont benutzen. Ausdruck klappt jetzt. Aaaaber: mein Dialog (der ja im Hintergrund wartet) wird plötzlich nicht mehr mit dem Systemfont (?) dargestellt, zum Teil verändert sich der Dialog sofort bzw. die Veränderung beginnt in dem Moment, wo ich mit der Maus circa das Element fahre. Nicht nur, dass es hässlich aussieht, der Systemfont ist auch più ampia, so dass der Text zum Teil nicht mehr zu lesen ist. Ich habe das Problem mal von meinem Programm und der Datenbank gelöst, so dass es einen überschaubaren Quelltext gibt:
DECLARE DLG&, DIALOGENDE%,TEXT1&,EDIT1&,BUTTON1&
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
PROC DIALOG
DLG&=CREATE("DIALOG",%HWND,"Neues Fenster",22,20,281,182)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
TEXT1& =@CREATE("TEXT",DLG&,"Irgendein Text",0023,0022,0070,0020)
EDIT1& =@CREATE("EDIT",DLG&,"Irgendwas",0115,0021,0120,0020)
BUTTON1& =@CREATE("BUTTON",DLG&,"Testdruck",0026,0082,0208,0030)
SETFOCUS(DLG&)
DIALOGENDE%=0
WHILENOT DIALOGENDE%
WAITINPUT
If %KEY=2
DIALOGENDE%= 1
ELSEIF CLICKED(EDIT1&)'EDIT
ELSEIF CLICKED(BUTTON1&)'BUTTON
UseFont "Arial",0,0,0,0,0'Druck in Arial ohne Textauszeichnung
StartPrint "*Testausdruck"
If %Printing
MoveTo 34, 34
LineTo 34 + 343, 34
LineTo 34 + 343, 34 + 343
LineTo 34, 34 + 343
LineTo 34, 34
EndPrint
EndIf
ENDIF
ENDWHILE
DESTROYWINDOW(DLG&)
ENDPROC
SET("AUTOPAINT",2)
'Das folgende Hauptfenster ist nur zum Testen:
WINDOWTITLE "DUMMY HAUPTFENSTER"
WINDOWSTYLE 63
WINDOW (%maxx-300),10-280,80
CLS RGB(0,0,0)
Color 10,0
PRINT "Bitte aufs Systemmenükreuz klicken "
DIALOG'Dialog aufrufen!
Wenn ich nun den Button klicke, wird der Button in einer anderen Schriftart dargestellt. Der Effekt tritt auch auf, wenn Io l' Druck abbreche. Verschiebe Io l' Windows-eigenen Dialog "Druckereinrichtung", dann werden alle Elemente in meinem Fenster im Systemfont dargestellt (und z.B. der Text ist nicht mehr vollständig zu lesen). Gibt es eine Möglichkeit, dieses Verhalten zu unterbinden? Vielleicht auch ohne, alle Elemente im Fenster neu zu erstellen? Thomas |
|
|
| |
|
|
|
RGH | Ciao,
in solchen Fällen sollte man nicht USEFONT benutzen, um den Font eines Fensters oder Dialoges zu setzen. Der Befehl ist nur sinnvoll, wenn man per alle Fenster und den Druck den selben Font nutzen möchte. Ich verwende USEFONT nur noch per die Druckausgabe und die Ausgabe auf dem Fenster mit DrawText.
Um den Font per ein Fenster/Dialog/Dialogelement gezielt zu setzen, verwende @CREATE("FONT",....), um ein Font-Handle zu erzeugen und SETFONT, um dieses Handle gezielt einem Fenster etc. zuzuweisen bzw. SETDIALOGFONT mit dem Handle als Parameter, um ihn allen weiteren Dialogen bzw. Dialogelementen zuzuweisen.
Merke: 1. USEFONT nur per die Druckausgabe oder Ausgabe auf dem Fenster mit DrawText verwenden! 2. SETDIALOGFONT nur mit einem Fonthandle benutzen, und niemals mit 1.
Saluto Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 17.04.2012 ▲ |
|
|
|
|
Jörg Sellmeyer | Am Besten Du setzt nach dem Erstellen des Hauptfensters die Programmschriftart mit:
fest. Das ist die Standardschriftart, die der User eingestellt hat. Dafür muß mit
die Headerdatei eingebunden werden. Das hat noch den Vorteil, dass Du kein Fonthandle am Programmende löschen mußt. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 17.04.2012 ▲ |
|
|
|
|
thb | |
|
| |
|
|