Benutzer mit den meisten Antworten
Listbox

Frage
-
Hallo NG,
ich habe auf einer Form eine Listbox, die bei Bedarf ein- oder ausgeblendet wird. Der User kann hier einen Filter auswählen (MultiSelect = .T.). Funktioniert perfekt. Wenn jetzt der User seine Auswahl noch einmal ansehen will kann er die Listbox wieder einblenden und ich markiere die ausgewählten Elemente programatisch. Auch das funktioniert perfekt, doch jetzt zu meinem Problem. Wenn die ausgewählten Elemente programatisch auf selected gesetzt wurden ist die Auswahl sofort weg wenn man den Scroll-Balken auch nur berührt. Wenn man dagegen die Auswahl mit der Maus vorgenommen hat bleibt die Auswahl erhalten.
Muss ich damit leben oder was kann ich tun, damit auch die programatische Selektierung beim scrollen erhalten bleibt?
Ich bedanke mich für jeden Tipp
Gruss Uli
Donnerstag, 28. Februar 2013 08:06
Antworten
-
Das heißt dann doch, das eigentliche Problem ist gar nicht das wieder sichtbar schalten, richtig? Das antippen der Scrollbar würde dann auch schon von vornherein dieses Verhalten haben.
Alias und Multiselect vertragen sich sowieso nicht so gut, es gibt eben nur einen Datensatzzeiger. Mach mal ein SCAN..ENDCAN und fülle die Listbox mit Additem() oder selektiere die Daten in eine Arrayeigenschaft der Listbox, dann hört der Spuk auf.
Tschüß, Olaf.
Olaf Doschke (Setmics)
- Als Antwort markiert Uli Münch Samstag, 2. März 2013 06:20
Freitag, 1. März 2013 07:47
Alle Antworten
-
>Wenn jetzt der User seine Auswahl noch einmal ansehen will kann er die Listbox wieder einblenden und ich markiere die ausgewählten Elemente programatisch.
Aber der User hat Sie doch vorher schon selektiert. Deselektierst Du Items, bevor Du die Listbox visible = .F. schaltest? Wenn Du nur visible umswitcht, bleibt doch alles beim alten.
Was ist denn Rowsource der Listbox? Value? Alias oder Fields? SQL-Statement? Array? oder per Add()/AddItem() zugefügte Items?
Olaf Doschke (Setmics)
- Bearbeitet Olaf Doschke Donnerstag, 28. Februar 2013 13:54
Donnerstag, 28. Februar 2013 13:43 -
Hallo Olaf,
danke für Deinen Tipp. Habe es gerade ausprobiert, ändert aber nichts. Selbst wenn ich Visible nicht anfasse, sondern nur Height = 0 setze. Bei scrollen gehen die Markierungen verloren.
Die RowSourceType ist Alias, ein mit sqlexec(..) generierter Cursor.
Gruss Uli
- Bearbeitet Uli Münch Freitag, 1. März 2013 06:50
Freitag, 1. März 2013 06:48 -
Das heißt dann doch, das eigentliche Problem ist gar nicht das wieder sichtbar schalten, richtig? Das antippen der Scrollbar würde dann auch schon von vornherein dieses Verhalten haben.
Alias und Multiselect vertragen sich sowieso nicht so gut, es gibt eben nur einen Datensatzzeiger. Mach mal ein SCAN..ENDCAN und fülle die Listbox mit Additem() oder selektiere die Daten in eine Arrayeigenschaft der Listbox, dann hört der Spuk auf.
Tschüß, Olaf.
Olaf Doschke (Setmics)
- Als Antwort markiert Uli Münch Samstag, 2. März 2013 06:20
Freitag, 1. März 2013 07:47 -
Hi Uli,
ich muss zu meiner Schande gestehen: "Ich hasse die Listbox" :)
Und aus diesem Grund baue ich mir die meistens als Grid nach. Will heissen: Textbox + Button rechts daneben und ein Klick auf den Button blendet unter der Textbox das Grid ein.
Funktioniert prima und ich muss mich mit diesem verqueren Listbox/Combobox Ding nicht rumschlagen :) :) :)
JM2C
Gruss / Best regards
-Tom
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible,
you are, by definition, not smart enough to debug it. 010101100100011001010000011110000101001001101111011000110110101101110011- Bearbeitet Tom Borgmann Freitag, 1. März 2013 07:52
Freitag, 1. März 2013 07:52 -
Hallo Tom,
Du beschreibst allerdings gerade eher die Combobox mit dem Dropdown button.
So schlimm sind Listbox und Combobox auch nicht, nur das Multiselect funktioniert nicht gut mit Alias und programmatischem setzen von Selected(n). Am besten geht es noch mit AddItem(), auch bezüglich dem deaktivieren von items. Siehe auch http://support.microsoft.com/kb/156737/en-us
Richtig ist, dass ein Grid mehr Möglichkeiten bietet, alleine schon mit Farbgebung etc.. Und man kann auch das Multiselect ohne Checkbox nachahmen, es gibt ja durchaus Bindevents, um alle Clicks zentral abzufangen und ein Selected-Feld zu verwalten.
Uli , probiere im ersten Ansatz einfach mal eine Schleife mit Additem(). Ds wird Dein Problem lösen. Und dann kannst Du immer noch über ein Grid an der Stelle nachdenken.
Tschüß, Olaf.
Olaf Doschke (Setmics)
- Bearbeitet Olaf Doschke Freitag, 1. März 2013 08:18
Freitag, 1. März 2013 08:09