Auswahlrequester / Selectrequester

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
mpz
Beiträge: 497
Registriert: 14.06.2005 15:53
Computerausstattung: Win 10 Pro, 16 GB Ram, Intel I5 CPU und TI1070 Grafikkarte, PB 5.73 / 6.00 beta4
Wohnort: Berlin, Tempelhof

Auswahlrequester / Selectrequester

Beitrag von mpz »

Hallo Leute,

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 :mrgreen:

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())

Working on - MP3D Engine -