bin gerade an einem Projekt um HDI Interface unter Windows auszulesen. Um zwischen verschiedenen angeschlossenen Geräten zu wählen wollte ich ein Selectrequester benutzen, habe aber keins gefunden. Daher schrieb ich selber einen Select/Auswahlrequester.
- Für mich ist er beispielhaft und effizient genug...
P.S. Ich hoffe ich habe nicht was erfunden was es schon gibt
Gruß
MPZ
Code: Alles auswählen
; PowerBasic Example einer Select Box
;
;
; by MPZ Okt.2006
; for PB 4.00
;
; Selectrequester (Selectbox.s,Selecttext.s,Mylist.s())
;
; Selectbox.s = Name des Fensters
; Selecttext.s = kleiner Infotext
; Übergabe der Auswahlstrings als Liststrings
; Rückgabewert = -1 bedeutet Fehler, anderer Wert = erfolgreiche Auswahl
Procedure Selectrequester (Selectbox.s,Selecttext.s,Mylist.s())
Enumeration 100 ; bei vielen Fenstern und Events den Wert 100 erhöhen
#Window_Selectbox
#Text_Selectbox
#Listview_Selectbox
#Button_Selectbox0
#Button_Selectbox1
EndEnumeration
Return_Selectbox.l = -1 ; Fehlerwert = -1
If CountList(Mylist()) < 1
ProcedureReturn = Return_Selectbox
EndIf
If OpenWindow(#Window_Selectbox,0,0, 305, 138, Selectbox.s, #PB_Window_SystemMenu | #PB_Window_TitleBar| #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_Selectbox))
TextGadget(#Text_Selectbox, 20, 10, 150, 14, Selecttext.s)
ListViewGadget(#Listview_Selectbox, 10, 30, 210, 100)
ButtonGadget(#Button_Selectbox0, 230, 70, 70, 23, "Wählen")
ButtonGadget(#Button_Selectbox1, 230, 107, 70, 23, "Abbrechen")
EndIf
EndIf
FirstElement(Mylist())
For a = 1 To CountList(Mylist())
AddGadgetItem (#Listview_Selectbox, -1, Mylist()) ; definieren des Listview-Inhalts
NextElement(Mylist())
Next
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?
If Event = #PB_Event_Gadget
If GadgetID = #Button_Selectbox0
Event = #PB_Event_CloseWindow
Return_Selectbox = GetGadgetState(#Listview_Selectbox)
ElseIf GadgetID = #Button_Selectbox1
Event = #PB_Event_CloseWindow
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
CloseWindow(#Window_Selectbox)
ProcedureReturn = Return_Selectbox
EndProcedure
NewList SelectList.s()
AddElement(SelectList())
SelectList() = "Hund"
AddElement(SelectList())
SelectList() = "Wasserhahn"
AddElement(SelectList())
SelectList() = "Bugs Bunny"
Debug Selectrequester ("Wähle ein Tier aus","Beispiele:",SelectList())
ClearList(SelectList())
AddElement(SelectList())
SelectList() = "Scanner 007"
AddElement(SelectList())
SelectList() = "HP PSC 2200"
AddElement(SelectList())
SelectList() = "Ricoh Caplio RX"
AddElement(SelectList())
SelectList() = "Superscann 001"
AddElement(SelectList())
SelectList() = "Hein Scann"
AddElement(SelectList())
SelectList() = "Dumm Scann"
AddElement(SelectList())
SelectList() = "Neu Scann"
AddElement(SelectList())
SelectList() = "Next Scann"
Debug Selectrequester ("Scanndevice auswählen","Geräte:",SelectList())