Tanaghra hat geschrieben:1. Ich habe im Hauptfenster einen Gruppe von 8 OptionGadgets, bei der erfragt werden soll, welche der 8 Optionen ausgewählt ist. Gibt es einen eleganteren Weg, die aktivierte Option zu ermitteln, als über eine If-Kaskade wie
Entweder so:
Code: Alles auswählen
EnableExplicit
Define Gadget
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OptionGadget(1, 10, 10, 200, 20, "Option 1")
OptionGadget(2, 10, 30, 200, 20, "Option 2")
OptionGadget(3, 10, 50, 200, 20, "Option 3")
OptionGadget(4, 10, 70, 200, 20, "Option 4")
OptionGadget(5, 10, 90, 200, 20, "Option 5")
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
Case 1, 2, 3, 4, 5
Debug Gadget
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Oder:
Code: Alles auswählen
EnableExplicit
Procedure OptionGadgetEvent()
Debug EventGadget()
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OptionGadget(1, 10, 10, 200, 20, "Option 1")
OptionGadget(2, 10, 30, 200, 20, "Option 2")
OptionGadget(3, 10, 50, 200, 20, "Option 3")
OptionGadget(4, 10, 70, 200, 20, "Option 4")
OptionGadget(5, 10, 90, 200, 20, "Option 5")
BindGadgetEvent(1, @OptionGadgetEvent())
BindGadgetEvent(2, @OptionGadgetEvent())
BindGadgetEvent(3, @OptionGadgetEvent())
BindGadgetEvent(4, @OptionGadgetEvent())
BindGadgetEvent(5, @OptionGadgetEvent())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Tanaghra hat geschrieben:2. Wenn ein ListIcon-Gadget mehr Einträge enthält, als gleichzeitig angezeigt werden können, verpaßt PureBasic dem Gadget automatisch einen vertikalen Scrollbalken. Mein Problem: Fügt man mit AddGadgetItem(#Gadget, -1, …) der Liste einen weiteren Eintrag am Ende der Liste hinzu, so kann man ihn nicht sehen, d.h. das Programm scrollt nicht von selbst nach unten, um den unten angefügten Eintrag sichtbar zu machen. Daran ändert sich auch dann nichts, wenn man das ListIcon-Gadget zum aktiven Gadget macht und den unten hinzugefügten Eintrag mittels
http://www.rsbasic.de/aktualisierung/wi ... oscroll.pb
Tanaghra hat geschrieben:3. Wie stellt man fest, ob ein Gadget deaktiviert (disabled) ist? Weder der GetGadgetState() noch der DisableGadget() scheinen hier weiterzuhelfen. In meinem Fall muß erfragt werden, ob ein TextGadget deaktiviert ist.
Entweder mit einer eigenen Variable, die du separat auf #True oder #False setzt, was nicht die schönere Lösung ist, oder du machst es mit WinAPI:
Code: Alles auswählen
If IsWindowEnabled_(GadgetID(#DeineGadgetnummerHierEingeben))=1
MessageRequester("","Gadget ist aktiviert.",0)
Else
MessageRequester("","Gadget ist deaktiviert.",0)
EndIf
Tanaghra hat geschrieben:4. Gibt es eine Möglichkeit, den Standardzeichensatz für ein gesamtes Fenster festzulegen, so daß man nicht unter jeden Gadget-Befehl SetGadgetFont(…) schreiben muß?
Ja:
PB-Hilfe hat geschrieben:SetGadgetFont(#Gadget, FontID): Das zu verwendende Gadget. Wenn dieser Parameter auf #PB_Default gesetzt wird, dann wird der Zeichensatz für alle neu erzeugten Gadgets geändert.