Listbox von Basic aus verwenden
Moderator: Moderatoren
Listbox von Basic aus verwenden
Hi,
ich steige gerade in OOBase ein um ein paar Formulare für meine Datenbanken zu erstellen. Bin auch schon recht weit gekommen, aber bei einigen grundlegend Basic Funktionen bin ich jetzt hängengeblieben und komme nicht weiter.
Und zwar hab ich noch nicht rausfinden können wie man feststellt welches Item in einer ListBox angeklickt wurde und wie man "von Hand" eine Listbox aus einer Datenbank füllen kann.
Gibt es dazu irgendwelche Beschreibungen, Hilfen, Tutorials? Ich hab die Office Hilfe schonmal überflogen, konnte aber noch nix finden was mir bei meinem Problem weitergeholfen hat
gruß
burli
ich steige gerade in OOBase ein um ein paar Formulare für meine Datenbanken zu erstellen. Bin auch schon recht weit gekommen, aber bei einigen grundlegend Basic Funktionen bin ich jetzt hängengeblieben und komme nicht weiter.
Und zwar hab ich noch nicht rausfinden können wie man feststellt welches Item in einer ListBox angeklickt wurde und wie man "von Hand" eine Listbox aus einer Datenbank füllen kann.
Gibt es dazu irgendwelche Beschreibungen, Hilfen, Tutorials? Ich hab die Office Hilfe schonmal überflogen, konnte aber noch nix finden was mir bei meinem Problem weitergeholfen hat
gruß
burli
Um nochmal konkreter zu fragen: ich habe eine Listbox auf einem Formular. Wie kann ich in Basic darauf zugreifen?
In allen Beispielen die ich bisher gefunden hab findet sich sowas wie
Muß ich eine bereits existierende Listbox nochmal anlegen? Oder irgendwie verknüpfen? Oder kann ich zb über Formularname.Listboxname darauf zugreifen?
Irgendwie hat mir bisher nix weitergeholfen
In allen Beispielen die ich bisher gefunden hab findet sich sowas wie
Code: Alles auswählen
Dim ListBox as Object
ListBox = oDialog.getControl("ListBox1")
Irgendwie hat mir bisher nix weitergeholfen
Hey burli,
um auf die Listbox zuzugreifen, nutzt du deinen Code:
wobei natürlich sowohl der Dialog als auch die Listbox mit dem Namen "ListBox!" existieren muss! Name ist "casesensitiv".
Nun solltest du dich mal mit den Debug Methoden dbg_methods ud dbg_properties vertraut machen, zwigen Sie dir doch die möglichen Eigenschaften und Methoden eines Objektes.
Um die Listbox zu Füllen, gibt es die Eigenschaft "stringItemList" womit du einen Array mit den Listeneinträgen (Strings) übergibst. also z.B.
Die Listbox hat nun sowohl die Einträge als auch die Reihenfolge (Indices) gespeichert. Um einen gewählten Eintrag zu erhalten, nutzt du die Eigenschaft "SelectedItems", welche dir eine Liste (Array) mit den Indexzahlen der gewählten Einträge liefert. Um den ersten gewählten Eintrag zu erhalten, schreibst du zum Beispiel:
Also - über den Index erhälst du den gewählten Eintrag . Es gibt noch ein paar andere Möglichkeiten, nur das führt hier zu weit. Ein gutes Buch hilft....
Gruss
Thomas
um auf die Listbox zuzugreifen, nutzt du deinen Code:
Code: Alles auswählen
Dim ListBox as Object
ListBox = oDialog.getControl("ListBox1")
Nun solltest du dich mal mit den Debug Methoden dbg_methods ud dbg_properties vertraut machen, zwigen Sie dir doch die möglichen Eigenschaften und Methoden eines Objektes.
Um die Listbox zu Füllen, gibt es die Eigenschaft "stringItemList" womit du einen Array mit den Listeneinträgen (Strings) übergibst. also z.B.
Code: Alles auswählen
dim aListe()
aListe = array("eins", "zwei", "drei")
ListBox.StringItemList = aListe()
Code: Alles auswählen
dim aIndexListe()
aIndexListe = ListBox.SelectedItems
msgbox aListe(aIndexListe(0))
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hey Burli,
hmm, du hat recht., der Code war auf "Dialog" gemüzt, meine Erklärung aber auf "Formular". Die Listbox ist ähnlich, im Dialog hast du jedoch mehr Möglichkeiten. Das, was ishc sagte, bezog sich auf das Formular
Gruss
Thomas
hmm, du hat recht., der Code war auf "Dialog" gemüzt, meine Erklärung aber auf "Formular". Die Listbox ist ähnlich, im Dialog hast du jedoch mehr Möglichkeiten. Das, was ishc sagte, bezog sich auf das Formular

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Heist das das der Code
sowohl für Dialog als auch für Formulare funktioniert? Damit schaffe ich mir ja eine Referenz der Listbox im Script mit der ich dann auf das eigenetliche Objekt zugreifen kann. Oder brauche ich statt oDialog ein Equivalent für Formulare?
Code: Alles auswählen
Dim ListBox as Object
ListBox = oDialog.getControl("ListBox1")
Hey Burli,

Um die Listbox im Formular zu erhalten, holst du dir das Objekt wie folgt:
Das gilt allerdings nur bei Writer-Dokumenten. Bei Calc hat jede Tabelle eine Draw-Page - und Formulare sind Elemente dieser Drawpage.
Hast du mehrer Formulare definiert, kannst du sie auch über die Namenseigenschaft errreichen, eben wie gehabt:
Viele Grüße
Thomas[/list]
Nein. Der gilt nur für Dialoge! Nur das ERgebnis ist ähnlich: Du erhälst das Objekt des Kontrollelementes - hier alos der Listbox. Und das hat jetzt verschiedene Eigenschaften und Methoden - und die sind ähnlichsowohl für Dialog als auch für Formulare funktioniert?

Um die Listbox im Formular zu erhalten, holst du dir das Objekt wie folgt:
Code: Alles auswählen
dim oDoc as object, oform as object, oCtl as object
oDoc = thisComponent 'das Dokument
REM das erste Formular eines Writer-Dokumentes
oForm = thisComponent.drawpage.Forms(0)
REM dein Kontrollelement
oCtl = oForm.getByName("ListBox1")
Hast du mehrer Formulare definiert, kannst du sie auch über die Namenseigenschaft errreichen, eben wie gehabt:
Code: Alles auswählen
oForm = thisComponent.drawpage.Forms.getByName("meinFormular")
Thomas[/list]
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Danke, jetzt kommen wir der Sache schon näher. Ich arbeite allerdings weder mit Writer noch mit Calc sondern mit Base. Aber soweit ich das bisher gesehen hab basieren die Formulare auf Writer bzw verhalten sich ganz ähnlich.
Ok, ich dank dir schonmal für die Hilfe. Vielleicht komm ich damit nen Schritt weiter
Ok, ich dank dir schonmal für die Hilfe. Vielleicht komm ich damit nen Schritt weiter
Hey Burli,
Base ist "nur" eine Containerdatei. Alle dort erzeugten Formulare oder Berichte sind "reinrassige" Writer-Dateien - nur, dass sie im Container gespeichert werden. Insofern... kein Unterschied bei der Programmierung.
Gruss
Thomas
Base ist "nur" eine Containerdatei. Alle dort erzeugten Formulare oder Berichte sind "reinrassige" Writer-Dateien - nur, dass sie im Container gespeichert werden. Insofern... kein Unterschied bei der Programmierung.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic