Combobox / Listbox - Äquivalent zu "ValueMember" ?

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

Moderator: Moderatoren

DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von DPunch »

Aloha mal wieder.

Das heutige Thema meiner Fragestunde sind Combo- bzw. Listboxen.

In .NET gibt ja es z.B. "DisplayMember" und "ValueMember", das eine wird zur Auswahl angezeigt, das andere ist ein hinter der Auswahl steckender Wert.

In OOo Basic lässt sich offensichtlich nur der (die) ausgewählte(n) String(s) abrufen (und natürlich die Position).

Gibt es da eine Möglichkeit, das ValueMember per Work-Around o.Ä. sozusagen zu imitieren?

Meine erste Idee war ein Array, dass an der ausgewählten Position der Box einfach den entsprechenden Wert stehen hat.
Aber sobald die Box interaktiv aus Eingaben gefüllt werden soll (als Suchfunktion, die bei jedem eingegebenen Buchstaben in einem Suchfeld ein neues Ergebnis in die Box packt), müsste ja dann jedes Mal parallel auch ein neues Array gefüllt werden, was mir performancetechnisch nicht wirklich günstig erscheint.

Gibt da es eine "elegantere" Lösung oder auch nur Idee zu?

Ziel:
Ich habe eine relativ große (Calc-)Liste mit Phrasen zu Gefahrhinweisen, bestehend aus der Phrase und einem Kuerzel dazu (ähnlich einem Primary Key).
Nun soll in diesen Phrasen in einem Dialog interaktiv gesucht werden können (bei eingabe von "augen" in einer Suchmaske z.B. sollen alle entsprechenden Phrasen zur Auswahl gestellt werden).
Im weiteren Verlauf muss ich jedoch sowohl mit der Phrase (also dem String, der ja dann auch in der Box steht), als auch mit dem Kuerzel weiterarbeiten.
Die Kuerzel dann per Suche über den String wieder aus der Liste zu holen, dauert in der Regel zu lange.
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von eBayer »

Du kannst auch den Key abfragen!
Schau mal in das beiliegende Testprogramm (hab es aus einem anderen Forum)..... ist zwar als ooBase-Formular realisiert, aber es zeigt die Funktionsweise.
Gruß eBayer
Dateianhänge
ListBox2ndCol.odb
(15.89 KiB) 158-mal heruntergeladen
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von DPunch »

Das Problem ist, dass bei dem Beispiel die ListBox eine ListBox auf einem Base-Formular ist und somit die Option der Datenanbindung von Haus aus mitbringt.

Ich glaube nicht, dass man Gleiches mit in einer ListBox in einem (Calc-)Dialog machen kann - oder besser: wenn es gehen würde, hätte ich nicht die leiseste Ahnung, wie.

Trotzdem Danke natürlich für die Idee.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von Stephan »

Gibt da es eine "elegantere" Lösung oder auch nur Idee zu?
Du solltest einfach einmal eine Beispieldatei hochladen oder genauere Aussagen machen und konkretere Code-Beispiele zur Verfügung stellen, dann könnten die Mitleser hier diskutieren und versuchen konkrete Ratschläge zu geben.

Das Makros, ihrer Natur nach, langsamer sind als kompillierte Sprachen ist so, nur man kann an manchen Stellen u.U. was machen, jedoch gibt es keine generellen Ratschläge und es ist kaum sinnvoll alles hinzuschreiben was möglich wäre.
Ob man z.B. in Calc-Tabellenblättern sucht, oder in Arrays bzw. wie man dort sucht, bzw. wie man Arrays, aus welchen Quellen, einliest macht im konkreten Fall hinsichtlich Geschwindigkeit teils riesige UNterschiede.

Als 'Einstimmung' sei zum Beispiel auf den Thread:
http://www.oooforum.org/forum/viewtopic.phtml?t=20783
verwiesen, der sich nur(!) einmal mit Sortieralgorithmen befasst und das auch nur(!) andeutungsweise und bei dem trotzdem schon riesige Geschwindigkeitsunterschiede deutlich werden.


Gruß
Stephan
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von gigabert »

DPunch hat geschrieben:Das Problem ist, dass bei dem Beispiel die ListBox eine ListBox auf einem Base-Formular ist und somit die Option der Datenanbindung von Haus aus mitbringt.

Ich glaube nicht, dass man Gleiches mit in einer ListBox in einem (Calc-)Dialog machen kann - oder besser: wenn es gehen würde, hätte ich nicht die leiseste Ahnung, wie.

Trotzdem Danke natürlich für die Idee.
Hallo,

du kannst in einem Calc-Dokument genauso eine ListBox einfügen (Symbol-Leiste Formular-Steuerelemente). Beim Anlegen startet auch ein Wizard, bei dem du eine Datenquelle anlegen kannst. Kannst aber auch abbrechen und Werte direkt bei den Eigenschaften eintragen. Zum Beispiel bei Listen-Einträge, oder bei Daten: Datenfeld/Listeninhalt. Dann werden auch Einträge angezeigt und denen entsprechende Werte zugeordnet. Ich hab's jetzt noch nicht getestet, dürfte aber ähnlich wie im Base-Formular funktionieren.

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von gigabert »

OK, lässt sich aus der ListBox wohl doch nur der ausgewählte Eintrag oder dessen Position in der Liste auslesen. Ich versteh aber auch nicht, was dann der Eintrag "Art des Listeninhalts. Werteliste" und die Einträge bei "Listeninhalt" bewirken sollen.
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Combobox / Listbox - Äquivalent zu "ValueMember" ?

Beitrag von DPunch »

Stephan hat geschrieben:Du solltest einfach einmal eine Beispieldatei hochladen oder genauere Aussagen machen und konkretere Code-Beispiele zur Verfügung stellen, dann könnten die Mitleser hier diskutieren und versuchen konkrete Ratschläge zu geben.
Konkrete Code-Beispiele kann ich natürlich nur für meine Lösung geben, bei der ich allerdings sehr an der Geschwindigkeit und Effizienz zweifle.

Im Anhang mal mein Ansatz mit Erklärungen, worauf ich hinaus will.

In dem Zusammenhang allerdings direkt noch eine Frage:
Gibt es sowas wie AddActionLock bzw LockControllers auch für einen Dialog? Oder macht man sowas komplett über das "Mutter"-Dokument?

Edit: Bei bei spuckt das Dokument erstmal eine Fehlermeldung aus, wenn ich direkt nach dem Öffnen den Dialog aufrufen will - keine Ahnung (bzw hab ich schon, aber ich weiss nicht, wie ich es beheben kann ;) ), woran das liegt, aber spätestens beim 2. Versuch sollte es funktionieren.
Antworten