Font verstellt sich
Font verstellt sich
Hallo,
in einer Anwendung (Windows) verwende ich verschiedene Fontgrößen.
Die Anwendung besteht aus einer einzigen Hauptmaske, die aber für Rückfragen kleinere Forms aufruft.
Wenn ich eine der Unterformen aufrufe, werden die Fonts des verdeckten Bereiches verändert.
Ein TextGadget beginnt dann z.B. mit einem Großen Font und verändert sich in einen kleinen.
Weiß jemand, wo ich was falsch machen könnte?
Gruß
Rolf
in einer Anwendung (Windows) verwende ich verschiedene Fontgrößen.
Die Anwendung besteht aus einer einzigen Hauptmaske, die aber für Rückfragen kleinere Forms aufruft.
Wenn ich eine der Unterformen aufrufe, werden die Fonts des verdeckten Bereiches verändert.
Ein TextGadget beginnt dann z.B. mit einem Großen Font und verändert sich in einen kleinen.
Weiß jemand, wo ich was falsch machen könnte?
Gruß
Rolf
Purebasic V.4.20 Windows 2000 SP 4
Purebasic V 4.20 Linux 2.6.15-25-686 #1 SMP
Purebasic V 4.20 Linux 2.6.15-25-686 #1 SMP
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Ein bissel Beispielcode wäre hilfreich 

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich habe da mal etwas zusammengestellt.
Wenn ich auf den Schalter 1 wähle, erhalte ich den Effekt
codetags hinzugefügt - ts
Wenn ich auf den Schalter 1 wähle, erhalte ich den Effekt
Code: Alles auswählen
Enumeration
#frm0
#frmask
#frmJaNein
#Font1
#Font2
#Font3
#Font4
#Frame3D_0
#cmdL1
#cmdL2
#cmdL3
#cmdL4
#cmdL5
#txtSkanner
#cmdGross
#cmdsuche
#cmdtools
#Frame3D_1
#grdLager
#lblFach
#lblPalette
#lblPaletteninfo
#cmdschmal
#cmdbreit
#cmdcancelbreit
#cmdJA
#cmdNEIN
EndEnumeration
Declare.w breite()
Procedure Open_frm0()
If LoadFont(#Font1, "Arial", 12)
SetGadgetFont(#PB_Default, FontID(#Font1))
EndIf
If OpenWindow(#frm0, 0, 0, 750, 520, "Lagersystem", #PB_Window_MinimizeGadget | #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#frm0))
Frame3DGadget(#Frame3D_0, 10, 10, 720, 120, "Regal")
ButtonGadget(#cmdL1, 20, 40, 140, 80, "1", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#cmdL2, 160, 40, 140, 80, "2", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#cmdL3, 300, 40, 140, 80, "3", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#cmdL4, 440, 40, 140, 80, "4", #PB_Button_Default | #PB_Button_Toggle)
ButtonGadget(#cmdL5, 580, 40, 140, 80, "5", #PB_Button_Default | #PB_Button_Toggle)
TextGadget(#lblPalette, 10, 140, 170, 60, "Skanner")
StringGadget(#txtSkanner, 100, 140, 370, 65, "", #PB_String_UpperCase)
TextGadget(#lblPaletteninfo,10,210,720,40,"Informatioenen zur aktuellen Buchung",#PB_Text_Border )
If LoadFont(#Font2, "Arial", 40)
SetGadgetFont(#txtSkanner, FontID(#Font2))
EndIf
If LoadFont(#Font3, "Arial", 20)
SetGadgetFont(#cmdL1, FontID(#Font3))
SetGadgetFont(#cmdL2, FontID(#Font3))
SetGadgetFont(#cmdL3, FontID(#Font3))
SetGadgetFont(#cmdL4, FontID(#Font3))
SetGadgetFont(#cmdL5, FontID(#Font3))
SetGadgetFont(#cmdGross, FontID(#Font3))
SetGadgetFont(#cmdsuche, FontID(#Font3))
SetGadgetFont(#lblPaletteninfo, FontID(#Font3))
EndIf
SetActiveGadget(#txtSkanner)
EndIf
EndIf
EndProcedure
Procedure.w breite()
Protected returnwert.w = 0
If OpenWindow(#frmask,0,0,600,100,"Palettenart", #PB_Window_WindowCentered,WindowID(#frm0))
If CreateGadgetList(WindowID(#frmask))
ButtonGadget(#cmdschmal,5,5,190,90,"SCHMAL")
ButtonGadget(#cmdbreit,205,5,190,90,"BREIT")
ButtonGadget(#cmdcancelbreit,405,5,190,90,"ABBRUCH")
If LoadFont(#Font3, "Arial", 20)
SetGadgetFont(#cmdschmal, FontID(#Font3))
SetGadgetFont(#cmdbreit, FontID(#Font3))
SetGadgetFont(#cmdcancelbreit, FontID(#Font3))
EndIf
EndIf
EndIf
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
GadgetID = EventGadget() ; Is it a gadget event?
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #cmdbreit
returnwert.w = 2
EndIf
If GadgetID = #cmdschmal
returnwert.w = 1
EndIf
If GadgetID = #cmdcancelbreit
returnwert.w = 99
EndIf
EndIf
Until returnwert.w > 0 ; End of the event loop
CloseWindow(#frmask)
ProcedureReturn returnwert
EndProcedure
Open_frm0()
Repeat ; Start of the event loop
Event = WaitWindowEvent(); This line waits until an event is received from Windows
WindowID = EventWindow(); The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget(); Is it a gadget event?
EventType = EventType(); The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
doexecute.w = 0
If GadgetID = #cmdL1
breite()
ElseIf GadgetID = #cmdL2
ElseIf GadgetID = #cmdL3
ElseIf GadgetID = #cmdL4
ElseIf GadgetID = #cmdL5
ElseIf GadgetID = #cmdGross
If GetGadgetState(#cmdGross)= 0
SetGadgetText(#cmdGross,"SCHMAL ( 1 FACH )")
CurBreit = 0
Else
SetGadgetText(#cmdGross,"BREIT ( 1,5 FÄCHER )")
CurBreit = 1
EndIf
ElseIf GadgetID = #txtSkanner
EndIf
EndIf
Until Event = #PB_Event_CloseWindow; End of the event loop
End
Purebasic V.4.20 Windows 2000 SP 4
Purebasic V 4.20 Linux 2.6.15-25-686 #1 SMP
Purebasic V 4.20 Linux 2.6.15-25-686 #1 SMP
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
So ganz weiß ich nicht was passieren soll, aber:
Pack mal die Ereignisbehandlung von "breite" in das normale Eventloop,
das Hauptfenster kann keinerlei Ereignisse abarbeiten und nichts richtig
darstellen. Andere Möglichkeit wäre es das Hauptfenster zu deaktivieren,
was wohl nicht Dein Wunsch ist?
WindowID speicherste ja bereits in einer variable, die brauchste um beim
#PB_Event_CloseWindow zu entscheiden ob Fenster "breite" dieses
schließen, oder Fenster Main, dann beenden.
Wenn Du es umgestellt hast, sehen wir mal weiter, mit den 2 Eventloops
geht es nicht, weil ein Fenster Tod
ist.
PS: nächste mal bitte Code Tags setzen
[ Code ] dein code [ /Code]
Pack mal die Ereignisbehandlung von "breite" in das normale Eventloop,
das Hauptfenster kann keinerlei Ereignisse abarbeiten und nichts richtig
darstellen. Andere Möglichkeit wäre es das Hauptfenster zu deaktivieren,
was wohl nicht Dein Wunsch ist?
WindowID speicherste ja bereits in einer variable, die brauchste um beim
#PB_Event_CloseWindow zu entscheiden ob Fenster "breite" dieses
schließen, oder Fenster Main, dann beenden.
Wenn Du es umgestellt hast, sehen wir mal weiter, mit den 2 Eventloops
geht es nicht, weil ein Fenster Tod

PS: nächste mal bitte Code Tags setzen
[ Code ] dein code [ /Code]
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

>codetags hinzugefügt - ts
<3 danke TS
Das löst das Problem auf jedenfall optisch, kann's mir nur so erklären das dein SetGadgetFont() vom Hauptfenster, durch das darüber erstellten Fenster "Palettenart" überlagert bzw ungültig wird.
Das gleiche beim toggeln der Buttons, durch das Event beim toggeln scheint auch hier das SetGadgetFont() überlagert zu werden...
<3 danke TS
Code: Alles auswählen
CloseWindow(#frmask)
SetGadgetFont(#lblPaletteninfo, FontID(#Font3))
Das gleiche beim toggeln der Buttons, durch das Event beim toggeln scheint auch hier das SetGadgetFont() überlagert zu werden...
ich weiß nicht, woran es letztendlich liegt, aber wenn Du für Dein
breite-Fenster einen anderen Font als #Font3 wählst, dann klappt es.
Wie gesagt: so richtig kenne ich mich mit dem Verstellen von Gadgetfonts
nicht aus. Ich nehme immer die Standardschriftarten (meine Kunden sind
i.d.R. nicht kurzsichtig
).
Außerdem solltest Du Dir angewöhnen immer nur eine Event-Schleife zu
verwenden.
Grüße ... Kiffi
breite-Fenster einen anderen Font als #Font3 wählst, dann klappt es.
Code: Alles auswählen
Procedure.w breite()
[...]
If LoadFont(#Font4, "Arial", 20)
SetGadgetFont(#cmdschmal, FontID(#Font4))
SetGadgetFont(#cmdbreit, FontID(#Font4))
SetGadgetFont(#cmdcancelbreit, FontID(#Font4))
EndIf
[...]
nicht aus. Ich nehme immer die Standardschriftarten (meine Kunden sind
i.d.R. nicht kurzsichtig

Außerdem solltest Du Dir angewöhnen immer nur eine Event-Schleife zu
verwenden.
Grüße ... Kiffi
a²+b²=mc²
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1