Einzelnen Eintrag in Listview-Gadget deaktivieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Einzelnen Eintrag in Listview-Gadget deaktivieren

Beitrag 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
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag 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?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Mok hat geschrieben:Sorry, hab vergessen zu sagen, dass ich noch mit 3.94 arbeite.
Arg! :mrgreen:
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

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Ich hab den Code jetzt an mein Prog angepasst, aber es funzt nicht :(
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag 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
Zuletzt geändert von Mok am 02.11.2008 20:00, insgesamt 1-mal geändert.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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 
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag 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:
Bild
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
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten