Seite 2 von 3
Verfasst: 23.09.2006 17:47
von AND51
...was aber nichts an der falschen Einsetzung der Flags vom einem Gadgets beim anderen gadget ändert

Verfasst: 23.09.2006 18:22
von Captn. Jinguji
AND51 hat geschrieben:...was aber nichts an der falschen Einsetzung der Flags vom einem Gadgets beim anderen gadget ändert

Ja, DESWEGEN habe ich ja betont, dass Dein Tip richtig & wichtig war.
Ich gehe allerdings andererseits inzwischen davon aus, dass das falsche Flag sowieso ignoriert wurde oder wirkungslos war, denn das Verhaltn ist ja ohne es auch das Falsche.
Die Flags sind inzwischen auch ordentlich per VisualDesigner generiert, nicht mehr per Hand eingetragen.

Sie sollten also richtig sein.
Fazit: es war zwar ein grober Flüchtigkeitsfehler drin, aber bisher kein so ganz richtig auffälliger Denkfehler erkennbar.
HMnja..... gibt's noch irgendeine bessere Möglichkeit als den Weg, den ich gewählt habe, um die Herkunft des falschen Events zu ermitteln ?
Die Definition des ListIcongadgets sieht nun - vom Visual Designer generiert - SO aus:
Code: Alles auswählen
ListIconGadget(#LIG_SOURCE, 15, 25, 550, 340, "Sel.", 30, #PB_ListIcon_CheckBoxes | #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)

Eifrige Beobachter werden bemerken, dass ich auch den Konstantennamen #LIV_SOURCE in #LIG_SOURCE geändert habe, was natürlich auch im sonstigen Code angepasst wurde.
Beissen einander vielleicht
#PB_ListIcon_FullRowSelect und
#PB_ListIcon_MultiSelect
Verfasst: 23.09.2006 18:24
von AND51
nein, die beißen sich nicht, sonst hätt ich das schon wissen müssen.
habe die beiden selber schon mal per hand zusammengebracht.
Verfasst: 24.09.2006 10:58
von HeX0R
Code: Alles auswählen
#PB_ListView_ClickSelect = #PB_ListIcon_AlwaysShowSelection
Es wurde also nicht ignoriert, oder war gar falsch, es wurde einfach nur anders interpretiert...
Verfasst: 24.09.2006 14:13
von mk-soft
Habe mir das mal so grob durchgelesen.
Das Problem ist in der Regel das von den Gadget immer mehrere Events kommen können. So mit EventType() erst auf das richtige Event reagieren.
FF

Verfasst: 24.09.2006 18:44
von Kaeru Gaman
> Das Problem ist in der Regel das von den Gadget immer mehrere Events kommen können. So mit EventType() erst auf das richtige Event reagieren.
außerdem kann pro Event-abfrage nur eines bearbeitet werden.
wenn also innerhalb einer schleife auf Events reagiert werden muss,
muss man sicherstellen, dass sie alle vorhandenen abarbeitet,
bevor neue erzeugt werden können.
Verfasst: 24.09.2006 19:02
von Captn. Jinguji
mk-soft hat geschrieben:Habe mir das mal so grob durchgelesen.
Das Problem ist in der Regel das von den Gadget immer mehrere Events kommen können. So mit EventType() erst auf das richtige Event reagieren.
FF

Lieber mk-soft, nach einem ersten Test würde ich sagen: Du hast es nun endgültig getroffen, danke.
Es werden in der Tat zwei Events erzeugt, und zwar in der Reihenfolge:
768 = #PB_EventType_Change
0 = #PB_EventType_LeftClick
Wenn Du mich jetzt noch erleuchten kannst, welches der beiden Events denn nun "in solchen Fällen" das "Richtige" ist / nach welchem ich filtern soll, kennt meine Dankbarkeit kaum noch Grenzen
Gehe ich recht in der Annahme, dass der "768er" das eigentliche Markieren der Zeile darstellt ? Dann würde ich - sozusagen kontraintuitiv - eher den abfragen als den "0er" (=Leftclick), weil Letzterer ja eher device- und eben nicht gadgetbezogen ist?
Verfasst: 24.09.2006 19:09
von Captn. Jinguji
HeX0R hat geschrieben:Code: Alles auswählen
#PB_ListView_ClickSelect = #PB_ListIcon_AlwaysShowSelection
Es wurde also nicht ignoriert, oder war gar falsch, es wurde einfach nur anders interpretiert...
Hmnja... aber das ist doch in diesem Falle nur Zufall, oder ? Nehmen wir den - sehr unwahrscheinlichen - Fall an dass Microsoft bzw. Monsieur Laboureur einmal darauf verfallen sollten, #PB_ListView_ClickSelect ungleich #PB_ListIcon_AlwaysShowSelection zu machen, wäre das Dilemma dann doch da. Den Einwand, versehentlich eine "falsche" Konstante einge-oder-t zu haben, mache ich mir schon zu eigen.
Verfasst: 24.09.2006 19:34
von Captn. Jinguji
Kaeru Gaman hat geschrieben:> Das Problem ist in der Regel das von den Gadget immer mehrere Events kommen können. So mit EventType() erst auf das richtige Event reagieren.
außerdem kann pro Event-abfrage nur eines bearbeitet werden.
wenn also innerhalb einer schleife auf Events reagiert werden muss,
muss man sicherstellen, dass sie alle vorhandenen abarbeitet,
bevor neue erzeugt werden können.
Ja, so ähnlich ist das wohl. Jedoch muss ich ehrlich gestehen, dass, selbst wenn Du mir
das so VOR meiner Umstellung auf "Clickmarkierung" geschrieben hättest, ich ohne mk-softs Hinweis dennoch in diese Falle gegangen wäre, weil das Programm bei Nutzung der SelectBox in der ersten Spalte - jawohl, das IST ein anderer Mechanismus, wie ich jetzt weiss - exakt so funktioniert hat wie ich mir das gedacht hatte. In erster Näherung sieht das ja "von aussen" nicht so viel anders aus, ob auf einen Mausclick ein Häkchen in einer Box oder eine Markierung einer Zeile gesetzt wird.
Wenn ich es jetzt aber einigermassen verstanden habe, muss ich zumindest bei der von mir gewählten Konstruktion NACH Einführung der
-Verzweigung doch nichts besonderes mehr machen, oder ? Die des interessierenden EventTypes führen zu einer Reaktion, die anderen nicht, aber die Events des Gadgets werden ja alle abgeholt, oder ?
Verfasst: 24.09.2006 19:50
von AND51
No' 'ne Idee: Verwendest du WindowEvent oder WAITWindowEvent? Kann ja vielleicht sein, dass ein mausklick zwei mal gewertet wird, weil du den Mausbutton über mehrere Windowevents hinweg gedrückt hälst...