wenn ich für meine Projekte eigene GUIs erstelle, hat es mich immer genervt, für jedes Gadget (falls benötigt) die Text- und Hintergrundfarbe,
sowie den Zeichensatz usw... einzeln zu setzen.
Also habe ich mir meine eigenen "Erweiterungen" der bekannten Gadgets gebastelt wie z.B. unten im Beispielcode zu sehen. Das funktioniert
eigentlich immer ganz gut, habe aber jetzt feststellen müssen, das es vereinzelt Probleme gibt, wenn ich für die ID keinen festen Wert sondern
#PB_Any übergebe (siehe Beispielcode).
Woran liegt das eigentlich und kann man den Teil innerhalb der Prozeduren wo das Gadget erstellt wir...
Code: Alles auswählen
If Gadget = #PB_Any
Gadget = CheckBoxGadget(#PB_Any, x, y, width, height, Text$, Flags)
Else
CheckBoxGadget(Gadget, x, y, width, height, Text$, Flags)
EndIf
Hier ein kleiner Beispielcode um den "Fehler" aufzuzeigen

Code: Alles auswählen
Enumeration
#WIN_INTERFACE
#TXT_TEXTGADGET
#CHK_CHECKBOX
#FNT_TAHOMA
EndEnumeration
Procedure CheckGadgetEx_(Gadget.l, x.l, y.l, width.l, height.l, Text$, Font=#PB_Ignore, Status.l=#False, Flags=0)
;Font = Zu verwendender Zeichensatz kann angegeben werden, sonst Systemfont
;Status = Check/Uncheck kann gesetzt werden
If Gadget = #PB_Any
Gadget = CheckBoxGadget(#PB_Any, x, y, width, height, Text$, Flags)
Else
CheckBoxGadget(Gadget, x, y, width, height, Text$, Flags)
EndIf
If IsGadget(Gadget)
If Font <> #PB_Ignore And IsFont(Font): SetGadgetFont(Gadget, FontID(Font)) : EndIf
SetGadgetState(Gadget, Status)
ProcedureReturn Gadget
EndIf
EndProcedure
Procedure TextGadgetEx_(Gadget, x, y, width, height, Text$="", TextColor=#PB_Ignore, BackColor=#PB_Ignore, Font=#PB_Ignore, Flags=0)
;TextColor = Zu verwendende Textfarbe innerhalb des Gadgets
;BackColor = Zu verwendende Hintergrundfarbe innerhalb des Gadgets
;Font = Zu verwendender Zeichensatz kann angegeben werden, sonst Systemfont
;Status = Check/Uncheck kann gesetzt werden
If Gadget = #PB_Any
Gadget = TextGadget(#PB_Any, x, y, width, height, Text$, Flags)
Else
TextGadget(Gadget, x, y, width, height, Text$, Flags)
EndIf
If IsGadget(Gadget)
If TextColor <> #PB_Ignore: SetGadgetColor(Gadget, #PB_Gadget_FrontColor, TextColor): EndIf
If BackColor <> #PB_Ignore: SetGadgetColor(Gadget, #PB_Gadget_BackColor , BackColor): EndIf
If Font <> #PB_Ignore And IsFont(Font): SetGadgetFont(Gadget, FontID(Font)) : EndIf
ProcedureReturn Gadget
EndIf
EndProcedure
If OpenWindow(#WIN_INTERFACE, 0, 0, 240, 100, "WindowTitle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
LoadFont(#FNT_TAHOMA, "Tahoma", 12)
TextGadgetEx_ (#TXT_TEXTGADGET, 10, 10, 100, 18, "TextGadget", $000000FF, $FFFFFFFF, #FNT_TAHOMA, #PB_Text_Center)
TextGadgetEx_ (#PB_Any , 10, 30, 100, 18, "TextGadget", $000000FF, $FFFFFFFF, #FNT_TAHOMA, #PB_Text_Center)
CheckGadgetEx_(#CHK_CHECKBOX , 120, 10, 100, 18, "Checkbox" , #FNT_TAHOMA, #True)
CheckGadgetEx_(#PB_Any , 120, 30, 100, 18, "Checkbox" , #FNT_TAHOMA, #True)
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf