Dialog: Listbox zurücksetzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Dialog: Listbox zurücksetzen

Beitrag von Steffan »

Hallo zusammen,

wie kann ich eine Listbox in einem Dialog makrogesteurt zurücksetzen, also so, dass kein Eintrag ausgewählt ist?

Code: Alles auswählen

oLst.selectitemPos(-1,True) 
macht es bei mir jedenfalls nicht.

Danke im Vorraus für Eure Hilfe,
Steffan.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Steffan,

na ja, die Methode war doch schon gut ;-) nur richtig füttern musst du sie. heissen müsste es:

Code: Alles auswählen

oLst.selectitemPos(1,False)
Dadurch wird der erste Eintrag deselektiert.

Also brauchst du nur die markierten Einträge (die Pos-Nummern erhälst du über den Array SelectedItemPos() ) alle zu deselectieren - fertig :-)

Oder du deselectierst über eine Schleife einfach alle Einträge. Das geht auch.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Beitrag von Steffan »

Hallo Thomas,

erst mal danke für Deine Antwort.

Allerdings ist das nur die halbe Wahrheit. Durch eine Schleife über alle Einträge mit .selectItemPos(i, False) wird wie gewünscht .selectedItemPos=-1 gesetzt, aber an der Ansicht (bei einer aufklappbaren Listbox) ändert sich nichts!
Der Nutzer kann so also nicht unterscheiden ob die Listbox zurückgesetzt wurde oder gerade nur keinen Fokus hat.
Mit anderen Worten: Iich hätte gern als Ergebnis des Zurücksetzens eine schöne, leere Listbox.
Die Verwendung von .MakeVisible(-1) hat mir da leider auch nicht weitergeholfen.

Steffan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Ich würde es so machen:

Code: Alles auswählen

With oLst
   .addItem("",.getItemCount())
   .selectItemPos(.getItemCount(),false)
   .RemoveItems(.getItemCount()-1,1)
End With
aber mich fragen wozu das Ganze gut sein soll. Ein Kombinationsfeld täte das Ganze einfacher, ich sehe nämlich nicht welchen Vorteil eine aufklappbare Listbox hier bietet, hatte nun vermutet es wäre (trotz optisch ungünstigen Effekts) ggf. doch Mehrfachselektion möglich, aber es geht garnicht. Wozu ist also die aufklappbare Listbox gut?



Gruß
Stephan
Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Beitrag von Steffan »

Hallo Stephan,

vielen Dank das hat geklappt.

Deine Frage nach den Sinn will ich aber noch beantworten:
Die Listbox ist in einem Suchdialog für Datenbankeinträge und enthält mögliche Kategorien. Kombinationsfeld geht deshalb nicht, weil der Nutzer aus vorhandenen Kategorien wählen soll und keinen eigene Text eintragen soll. Aufklappbar ist die Listbox, weil es einfach Platz spart.
Und gebraucht wird das Zurücksetzen für eine Resetfunktion. Damit erhalten alle Controls ihren Ausgangszustand ohne den Dialog zu schließen. Anschließend kann eine neue Suche gestartet werden.

Steffan
Antworten