Seite 1 von 2
Einzelnen Eintrag in Listview-Gadget deaktivieren
Verfasst: 02.11.2008 16:42
von Mok
Hi!
Kann man auch nur einen Eintrag in einem ListviewGadget unanwählbar machen, oder kann man nur das ganze Gadget unbrauchbar machen?
MfG, Mok
Verfasst: 02.11.2008 17:35
von RSBasic
@Mok
Hallo,
ich habe bei MSDN und in Foren geguckt, aber ich habe leider nix gefunden.
Hab mal trotzdem eine Alternative ausgedacht, vielleicht ist das für dich trotzdem hilfreich:
Code: Alles auswählen
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListViewGadget(1,10,10,480,230,0)
AddGadgetItem(1,-1,"Item 1",0,0)
AddGadgetItem(1,-1,"Item 2",0,0)
AddGadgetItem(1,-1,"Item 3",0,0)
AddGadgetItem(1,-1,"Item 4",0,0)
AddGadgetItem(1,-1,"Item 5",0,0)
EndIf
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadget()
Case 1
If GetGadgetState(1)=0
SetGadgetState(1,1)
EndIf
EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
Quit=1
EndIf
Until Quit=1
EndIf
Verfasst: 02.11.2008 18:52
von Mok
Sorry, hab vergessen zu sagen, dass ich noch mit 3.94 arbeite.
Außerdem macht dein Code doch die ganze Listview unanwählbar, oder lese ich da etwas falsch?
Verfasst: 02.11.2008 19:14
von RSBasic
Mok hat geschrieben:Sorry, hab vergessen zu sagen, dass ich noch mit 3.94 arbeite.
Arg!
Mok hat geschrieben:Außerdem macht dein Code doch die ganze Listview unanwählbar, oder lese ich da etwas falsch?
Nein, nur der erste Eintrag ist unanwählbar (GetGadgetState(1)=0).
PureBasic Hilfe hat geschrieben:GetGadgetState(): ermittelt den Index vom ausgewählten Eintrag
Und wenn dein erster Eintrag also die Position 0 ausgewählt wurde, dann springt er zum 2.Eintrag, also die Position 1: SetGadgetState(1,1)
\\Edit:
Müsste doch so funktionieren:
Code: Alles auswählen
If OpenWindow(0,0,0,500,250,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Window")
If CreateGadgetList(WindowID(0))
ListViewGadget(1,10,10,480,230,0)
AddGadgetItem(1,-1,"Item 1",0)
AddGadgetItem(1,-1,"Item 2",0)
AddGadgetItem(1,-1,"Item 3",0)
AddGadgetItem(1,-1,"Item 4",0)
AddGadgetItem(1,-1,"Item 5",0)
EndIf
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadgetID()
Case 1
If GetGadgetState(1)=0
SetGadgetState(1,1)
EndIf
EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
Quit=1
EndIf
Until Quit=1
EndIf
Verfasst: 02.11.2008 19:50
von Mok
Ich hab den Code jetzt an mein Prog angepasst, aber es funzt nicht

Verfasst: 02.11.2008 19:54
von RSBasic
@Mok
Funktioniert bei dir ohne Anpassung mein Code überhaupt?
Bei mir funktioniert es mit 4.2 und mit 3.93.
Hast du bei:
>Case 1
>>If GetGadgetState(1)=0
>>>SetGadgetState(1,1)
>>EndIf
wirklich die richtigen Gadgetnummer eingegeben?
Verfasst: 02.11.2008 19:57
von Mok
RSBasic hat geschrieben:@Mok
Funktioniert bei dir ohne Anpassung mein Code überhaupt?
Bei mir funktioniert es mit 4.2 und mit 3.93.
Hast du bei:
>Case 1
>>If GetGadgetState(1)=0
>>>SetGadgetState(1,1)
>>EndIf
wirklich die richtigen Gadgetnummer eingegeben?
Na ja, #Listview_0 eben.
Edit
Bevor jetzt jemand die Kristallkugel holt:
Code: Alles auswählen
If EventID=#PB_Event_Gadget
Select EventGadgetID()
Case 1
If GetGadgetState(#Listview_0)=0
SetGadgetState(#Listview_0,1)
EndIf
EndSelect
EndIf
Edit2
Ich hab jetzt auch bei mir alle Einträge auf -1 gesetzt
Verfasst: 02.11.2008 19:59
von RSBasic
Dann eher so:
Code: Alles auswählen
If EventID=#PB_Event_Gadget
Select EventGadgetID()
Case #Listview_0
If GetGadgetState(#Listview_0)=0
SetGadgetState(#Listview_0,1)
EndIf
EndSelect
EndIf
Verfasst: 02.11.2008 20:06
von Mok
Funzt nicht.
Code: Alles auswählen
If EventID=#PB_Event_Gadget
Select EventGadgetID()
Case #Listview_0
If GetGadgetState(#Listview_0)=0
SetGadgetState(#Listview_0,1)
EndIf
EndSelect
EndIf
Nochmal:

Und könnten wir evtl. den Code an den folgenden anpassen (hab ich mit Visual Designer gemacht):
Code: Alles auswählen
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadgetID() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_EventGadget
If GadgetID = #String_0
ElseIf GadgetID = #Radio_0
ElseIf GadgetID = #Radio_1
ElseIf GadgetID = #CheckBox_0
ElseIf GadgetID = #Radio_2
ElseIf GadgetID = #String_2
ElseIf GadgetID = #Listview_0
ElseIf GadgetID = #CheckBox_1
ElseIf GadgetID = #Image_0
Beep_(400,200)
Beep_(600,200)
Beep_(800,200)
Beep_(1000,200)
Beep_(1200,300)
Beep_(400,200)
ElseIf GadgetID = #CheckBox_3
status_checkbox_3 = GetGadgetState(#CheckBox_3)
If status_checkbox_3 = 1
DisableGadget(#String_2, 0)
Else
DisableGadget(#string_2,1)
EndIf
ElseIf GadgetID = #Button_0
ElseIf GadgetID = #Button_1
End
EndIf
EndIf
EventID = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Verfasst: 02.11.2008 20:20
von RSBasic
Code: Alles auswählen
Enumeration
#String_0
#String_2
#Radio_0
#Radio_1
#Radio_2
#CheckBox_0
#CheckBox_1
#CheckBox_3
#Listview_0
#Image_0
#Button_0
#Button_1
EndEnumeration
If OpenWindow(0,0,0,500,250,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Window")
If CreateGadgetList(WindowID(0))
ListViewGadget(#Listview_0,10,10,480,230,0)
AddGadgetItem(#Listview_0,-1,"Item 1",0)
AddGadgetItem(#Listview_0,-1,"Item 2",0)
AddGadgetItem(#Listview_0,-1,"Item 3",0)
AddGadgetItem(#Listview_0,-1,"Item 4",0)
AddGadgetItem(#Listview_0,-1,"Item 5",0)
EndIf
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadgetID()
Case #Listview_0
If GetGadgetState(#Listview_0)=0
SetGadgetState(#Listview_0,1)
EndIf
Case #Radio_0
Case #Radio_1
Case #CheckBox_0
Case #Radio_2
Case #String_2
Case #CheckBox_1
Case #Image_0
Beep_(400,200)
Beep_(600,200)
Beep_(800,200)
Beep_(1000,200)
Beep_(1200,300)
Beep_(400,200)
Case #CheckBox_3
status_checkbox_3 = GetGadgetState(#CheckBox_3)
If status_checkbox_3 = 1
DisableGadget(#String_2, 0)
Else
DisableGadget(#string_2,1)
EndIf
Case #Button_0
Case #Button_1
End
EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
Quit=1
EndIf
Until Quit=1
EndIf