ListIconGadget: Häkchen=OK, SELECTRow=OK, Beides=NICHTS!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Gerhard
Beiträge: 37
Registriert: 29.09.2004 23:44
Wohnort: Zedtwitz

ListIconGadget: Häkchen=OK, SELECTRow=OK, Beides=NICHTS!

Beitrag von Gerhard »

Hallo lieber Leser,
vielleicht kannst Du zu meinem Problem eine Hilfe anbieten:

Ich benutze mit Vorliebe für Datensatzdarstellungen das ListIconGadget.
Es klappt fast alles ausgezeichnet, bis auf dieses Problem:

Ich verwende das ListIcon nur mit #PB_ListIcon_CheckBoxes, ohne
#PB_ListIcon_FullRowSelect

Soweit so gut. Ich möchte grundsätzlich, dass man zur Auswahl eines
Datensatzes diesen Datensatz mit einem HÄKCHEN in der kleinen
Checkbox davor kennzeichnet! Das klappt ausgezeichnet.

Wenn man aber mit der Maus ausrutscht und knapp neben des
Checkbox-Kästchen klickt, dann hat man in der ersten Spalte neben
dem Checkbox-Kästchen den Spalteneintrag 0 selektiert.
Auch diese Kennzeichnung kann man abfragen, wenn das Checkbox-
Häkchen nicht zusätzlich angeklickt ist.

Ist aber beides erfolgt, also HÄKCHEN im Checkbox-Kästchen und
der Spalteneintrag 0 selektiert, dann erkennt das System nicht mehr,
dass dieser Datensatz mit dem Häkchen in der Checkbox ausgewählt werden sollte.

Ich wünschte mir entweder, dass man generell die SELEKTION des
ersten Spalteneintrages überhaupt unterdrücken kann, oder aber,
dass man trotz Häkchen und Selektion noch nach dem Häkchen abfragen
kann. Ich habe mal als Beispiel ein kleines Miniprogramm dazugefügt.

Wer kann mir helfen???

Code: Alles auswählen

Declare Abfrage()

OpenWindow(0,100,100,400,170,#PB_Window_SystemMenu,"ListViewBeispiel")
CreateGadgetList(WindowID())
        CreateGadgetList(WindowID())

        ListIconGadget(4,10,2,380,130,"Nr",68,#PB_ListIcon_CheckBoxes|#PB_ListIcon_GridLines|#PB_ListIcon_HeaderDragDrop)         
        AddGadgetColumn(4,1,"CALL",105)
        AddGadgetColumn(4,2,"DATE",95)
        AddGadgetColumn(4,3,"UTC",52)
        ButtonGadget(2,160,140,80,24,"EXIT")
        ButtonGadget(3,10,140,140,24,"DATENSATZ-AUSWAHL")
        AddGadgetItem(4,-1,"12"+Chr(10)+"DL3SD"+Chr(10)+"12.10.1999"+Chr(10)+"13:22")
        AddGadgetItem(4,-1,"13"+Chr(10)+"F4DDC"+Chr(10)+"04.04.2002"+Chr(10)+"14:08")
        AddGadgetItem(4,-1,"14"+Chr(10)+"SP9KLL"+Chr(10)+"19.12.2003"+Chr(10)+"02:24")
        AddGadgetItem(4,-1,"15"+Chr(10)+"SM2KOP"+Chr(10)+"02.07.2004"+Chr(10)+"19:13")


Procedure Abfrage()
For i=0 To CountGadgetItems(4)-1
          Select GetGadgetItemState(4,i)
              Case #PB_ListIcon_Selected
              MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch SELEKTION-AUSWAHL angeklickt,OK!")
              Case #PB_ListIcon_Checked
              MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch HÄKCHEN-AUSWAHL angeklickt,OK!")
              Default
              MessageRequester("","Eintrag "+Str(i)+" NICHT ERKANNT!!!")
          EndSelect
          
Next i
EndProcedure


Repeat
Event=WaitWindowEvent()
Event2=EventMenuID()

    Select Event
        Case #PB_EventGadget
                GadgetID = EventGadgetID()
                Select GadgetID
                    Case 3:Abfrage()
                EndSelect
    EndSelect



Until Event=#PB_Event_CloseWindow
End
WER KANN MIR DA WEITERHELFEN?

Edit by NicTheQuick: Code-Tags gesetzt
Hinweis: Großbuchstaben bedeuten Schreien. Und das gehört sich hier nicht!
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Vieleicht eine dritte Abfrage dazu nehmen?

Code: Alles auswählen

Declare Abfrage() 

OpenWindow(0,100,100,400,170,#PB_Window_SystemMenu,"ListViewBeispiel") 
CreateGadgetList(WindowID()) 
CreateGadgetList(WindowID()) 

ListIconGadget(4,10,2,380,130,"Nr",68,#PB_ListIcon_CheckBoxes|#PB_ListIcon_GridLines|#PB_ListIcon_HeaderDragDrop) 
AddGadgetColumn(4,1,"CALL",105) 
AddGadgetColumn(4,2,"DATE",95) 
AddGadgetColumn(4,3,"UTC",52) 
ButtonGadget(2,160,140,80,24,"EXIT") 
ButtonGadget(3,10,140,140,24,"DATENSATZ-AUSWAHL") 
AddGadgetItem(4,-1,"12"+Chr(10)+"DL3SD"+Chr(10)+"12.10.1999"+Chr(10)+"13:22") 
AddGadgetItem(4,-1,"13"+Chr(10)+"F4DDC"+Chr(10)+"04.04.2002"+Chr(10)+"14:08") 
AddGadgetItem(4,-1,"14"+Chr(10)+"SP9KLL"+Chr(10)+"19.12.2003"+Chr(10)+"02:24") 
AddGadgetItem(4,-1,"15"+Chr(10)+"SM2KOP"+Chr(10)+"02.07.2004"+Chr(10)+"19:13") 



Procedure Abfrage()
For i=0 To CountGadgetItems(4)-1
Select GetGadgetItemState(4,i) 
Case #PB_ListIcon_Selected 
MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch SELEKTION-AUSWAHL angeklickt,OK!") 
Case #PB_ListIcon_Checked  
MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch HÄKCHEN-AUSWAHL angeklickt,OK!") 
Case #PB_ListIcon_Selected |#PB_ListIcon_Checked
MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch HÄKCHEN/SELEKTION-AUSWAHL angeklickt,OK!")
Default 
MessageRequester("","Eintrag "+Str(i)+" NICHT ERKANNT!!!") 
EndSelect 

Next i 
EndProcedure 


Repeat 
Event=WaitWindowEvent() 
Event2=EventMenuID() 

Select Event 
Case #PB_EventGadget 
GadgetID = EventGadgetID() 
Select GadgetID 
Case 3
Abfrage() 
EndSelect 
EndSelect 



Until Event=#PB_Event_CloseWindow 
End 
Bild
Win11 Pro 64-Bit, PB_6.11b1
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

oder so

Code: Alles auswählen

a= GetGadgetItemState(4,i) 
if a&#PB_ListIcon_Selected 
  MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch SELEKTION-AUSWAHL angeklickt,OK!") 
endif
if a& #PB_ListIcon_Checked 
  MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch HÄKCHEN-AUSWAHL angeklickt,OK!") 
endif
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Oder so

Code: Alles auswählen

Procedure Abfrage()
For i=0 To CountGadgetItems(4)-1
If GetGadgetItemState(4,i)=3
   SetGadgetItemState(4,i,#PB_ListIcon_Checked)
EndIf
Select GetGadgetItemState(4,i) 
Case  #PB_ListIcon_Selected
MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch SELEKTION-AUSWAHL angeklickt,OK!") 
Case  #PB_ListIcon_Checked ;& 3 
MessageRequester("","Es wurde der Eintrag "+Str(i)+" durch HÄKCHEN-AUSWAHL angeklickt,OK!") 
Default 
MessageRequester("","Eintrag "+Str(i)+" NICHT ERKANNT!!!") 
EndSelect 

Next i 
EndProcedure 
Bild
Win11 Pro 64-Bit, PB_6.11b1
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

@falko:
Ich brauch bsw. den Hacken für DateiBearbeiten und ich brauch die Makierung. Es können ja mehrere einträge gleichzeitig makiert sein und ich will bei denen verschiedene Optionen ändern. Bei deinen Code kann ich *NICHT* feststellen, ob der Eintrag makiert ist, wenn ein Hacken da ist.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@GPI
Dein Code ist so, wie das muß.
Habe nur noch eine weitere Möglichkeit ausprobiert auf die @Gerhard
gefragt hatte:
Ich wünschte mir entweder, dass man generell die SELEKTION des
ersten Spalteneintrages überhaupt unterdrücken kann
, oder aber,
dass man trotz Häkchen und Selektion noch nach dem Häkchen abfragen
kann. Ich habe mal als Beispiel ein kleines Miniprogramm dazugefügt.
Das habe ich damit ereichen wollen. Ich persöhnlich würde aber deinen
Codeschnipsel vorziehen. :allright:

[Edit]
Kleiner Tip am Rande, @Gerhard
Mit Debug kann man vor dem Selectanfang die Select-Varible oder -Function
überprüfen. Somit würden Werte von 0-3 beim obigen Select ausgegeben.

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Gerhard
Beiträge: 37
Registriert: 29.09.2004 23:44
Wohnort: Zedtwitz

ListIconGadget - Abfragemöglichkeit

Beitrag von Gerhard »

Hallo Falko und GPI

vielen Danke für Eure Mühe bzgl. der guten Antworten. Also ich muss
sagen, die Lösung mit dem '&' in der Abfrage statt '=' finde ich
am besten, dass heisst, wenn Selected ist und das Häkchen steht,
wird es als ausgewählt erkannt. Spitze!
Da komme ich jetzt einen Riesenschritt weiter, FAlko und GPI.
Auch die Möglichkeit mit den 3 Auswahlkriterien habe ich noch nicht so
selbst erkannt,hi... wusste gar nicht, dass man bei einer Abfrage
die Konstanten einfach durch einen '|'-Strich trennen kann.
Vielen Dank ihr beiden

Gruss Gerhard
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

& = Binäres und | = binäres oder
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten