Status einer CheckBox in ListIcon Problem via Dialog Fenster

Für allgemeine Fragen zur Programmierung mit PureBasic.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Status einer CheckBox in ListIcon Problem via Dialog Fenster

Beitrag von MenschMarkus »

Hi,

ich habe folgenden Effekt festgestellt.

Bei Programmierung eines Fensters mit Dialog kann ich keinen Status einer CheckBox innerhalb eines ListIcons setzen. Programmiere ich das Fenster via PB funktioniert alles.
Kann das jemand bestätigen?
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Status einer CheckBox in ListIcon Problem via Dialog Fen

Beitrag von HeX0R »

Danke für den Code...
Kann ich nicht bestätigen:

Code: Alles auswählen

Procedure.s GetXMLString()
	Protected XML$

	XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
	XML$ + ""
	XML$ + "<dialogs>"
	XML$ + "  <window name='window_1' flags='#PB_Window_SystemMenu'>"
	XML$ + "    <frame name='frame_1' text='Test'>"
	XML$ + "      <listicon name='listicon_1' width='300' height='250' flags='#PB_ListIcon_CheckBoxes'/>"
	XML$ + "    </frame>"
	XML$ + "  </window>"
	XML$ + "</dialogs><!--DDesign0R Definition: PureBasic|1|1|1|_-->"
	XML$ + ""

	ProcedureReturn XML$
EndProcedure

;Test it
CompilerIf #PB_Compiler_IsMainFile
	a$ = GetXMLString()
	CatchXML(0, @a$, StringByteLength(a$), 0, #PB_Unicode)
	CreateDialog(0)
	OpenXMLDialog(0, 0, "window_1")
	For i = 1 To 20
		AddGadgetItem(DialogGadget(0, "listicon_1"), -1, "Item " + Str(i))
	Next i
	
	SetGadgetItemState(DialogGadget(0, "listicon_1"), 5, #PB_ListIcon_Checked)
	
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
CompilerEndIf
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Status einer CheckBox in ListIcon Problem via Dialog Fen

Beitrag von MenschMarkus »

OK HeXOR,

erst mal Danke für die Info und den Code.
Ich verwenden zum Aufbau des Dialogs auch Dein Tool. Es gibt nur einen kleinen Unterschied. Ich verwende die ID anstelle des Namens.
Erzeuge ich den Code so wie Du, funktioniert es auch.

Code: Alles auswählen

;/-------------------------
;|
;| Names, IDs, Procedures
;|
;| Example Template for Dialog Design0R
;|
;/-------------------------

Runtime Enumeration Windows
	#Window_1
EndEnumeration


#DD_WIN_window_1 = "window_1"


Runtime Enumeration Gadgets
	#listicon_1
EndEnumeration


#DD_GADGET_listicon_1 = "listicon_1"



Procedure.s GetXMLString()
	Protected XML$

	XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
	XML$ + ""
	XML$ + "<dialogs>"
	XML$ + "  <window flags='#PB_Window_SystemMenu' width='200' height='200' name='window_1' id='#Window_1'>"
	XML$ + "    <listicon flags='#PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines' name='listicon_1' id='#listicon_1'/>"
	XML$ + "  </window>"
	XML$ + "</dialogs><!--DDesign0R Definition: PureBasic|1|1|0-->"
	XML$ + ""

	ProcedureReturn XML$
EndProcedure

;Test it
CompilerIf #PB_Compiler_IsMainFile
	a$ = GetXMLString()
	CatchXML(0, @a$, StringByteLength(a$), 0, #PB_Unicode)
	CreateDialog(0)
	OpenXMLDialog(0,0,"window_1")
	For i = 1 To 20
	  AddGadgetItem(#listicon_1,-1,"Item" + Str(i))
	Next
	SetGadgetItemState(#listicon_1,5,#PB_ListIcon_Checked)
	SetGadgetItemState(#listicon_1,6,#PB_ListIcon_Checked)
	Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
CompilerEndIf


;(c) HeX0R 2019
Erstaunlich ist, dass ich das ListIcon in meinem Programm auch mit Zeilen füllen kann. Nur sobald ich die CheckBoxen aktivieren möchte passiert nichts. Die Befehle scheinen auch OK zu sein, da keine Fehlermeldung generiert wird.

Hier mal ein Code snippet

XML Snippet:

Code: Alles auswählen

...
	XML$ + "                  <hbox expand='equal'>"
	XML$ + "                    <vbox expand='item:1'>"
	XML$ + "                      <listicon flags='#PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect' name='listicon_parameter_listenanzeige' id='#listicon_parameter_listenanzeige' onchange='newparameter()' onevent='newparameter()'/>"
	XML$ + "                      <frame text=' Anzeige ab ' name='frame_parameter_anzeigeab' id='#frame_parameter_anzeigeab'>"
	XML$ + "                        <vbox expand='equal'>"
	XML$ + "                          <text text='50' flags='#PB_Text_Center' name='text_parameter_qualitylevel' id='#text_parameter_qualitylevel'/>"
	XML$ + "                          <trackbar flags='#PB_TrackBar_Ticks' text=' Anzeige ab ' min='1' max='9' height='30' name='trackbar_parameter_quality' id='#trackbar_parameter_quality' onevent='newparameter()'/>"
	XML$ + "                        </vbox>"
	XML$ + "                      </frame>"
	XML$ + "                    </vbox>"
	XML$ + "                    <listicon flags='#PB_ListIcon_GridLines' name='listicon_parameter_statistik' id='#listicon_parameter_statistik'/>"
	XML$ + "                  </hbox>"

...
ListIcon Füllsnippet (funktioniert problemlos!)

Code: Alles auswählen

  AddGadgetColumn(#listicon_parameter_listenanzeige,0,"Wahl",50)
  AddGadgetColumn(#listicon_parameter_listenanzeige,1,"Listen Name",100)
  AddGadgetColumn(#listicon_parameter_listenanzeige,2,"Listendatum",50)  
  AddGadgetItem(#listicon_parameter_listenanzeige,0,Chr(10) + "Liste 1")
  AddGadgetItem(#listicon_parameter_listenanzeige,1,Chr(10) + "Liste 2")
  AddGadgetItem(#listicon_parameter_listenanzeige,2,Chr(10) + "Liste 3")
  AddGadgetItem(#listicon_parameter_listenanzeige,3,Chr(10) + "Liste 4")
ListIcon CheckBox Steuerung (Funktioniert nicht!)

Code: Alles auswählen

  envi\SEU = ReadPreferenceInteger("SEU",1)
  If envi\SEU = 1 
    SetGadgetItemState(#listicon_parameter_listenanzeige,0,#PB_ListIcon_Checked)
  EndIf
  envi\SUN = ReadPreferenceInteger("SUN",1)
  If envi\SUN = 1
    SetGadgetItemState(#listicon_parameter_listenanzeige,1,#PB_ListIcon_Checked)
  EndIf
  envi\SUK = ReadPreferenceInteger("SUK",1)
  If envi\SUK = 1
    SetGadgetItemState(#listicon_parameter_listenanzeige,2,#PB_ListIcon_Checked)
  EndIf
  envi\SUS = ReadPreferenceInteger("SUS",1)
  If envi\SUS = 1
    SetGadgetItemState(#listicon_parameter_listenanzeige,3,#PB_ListIcon_Checked)
  EndIf
Woran könnte das liegen?
Ich setze PB 5.73 LTS ein
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Status einer CheckBox in ListIcon Problem via Dialog Fen

Beitrag von HeX0R »

Es ist immer schwierig mit nur ein paar Snippets das Problem zu finden.
Ich sehe jetzt nichts was dafür verantwortlich sein könnte, kannst Du das Ganze nicht soweit zusammenstampfen, dass es gerade noch lauffähig ist, und trotzdem das Verhalten aufzeigt?
Vermutlich findest Du dann sogar den Fehler selbst schon.

Mach doch mal nen paar Debugs rein, um zu sehen, ob irgendeine Deiner SetGadgetItemState() Prozeduren überhaupt aufgerufen werden.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Status einer CheckBox in ListIcon Problem via Dialog Fen

Beitrag von MenschMarkus »

mea culpa
wenn man so blöd ist und Checkbox Status setzt bevor diese überhaupt im ListIcon eingetragen sind kann es nicht funktionieren.
Eindeutig saß der Fehler vor der Tastatur.
:oops:
Wissen schadet nur dem, der es nicht hat !
Antworten