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



