Seite 1 von 1
Füllen von Listen (Kombinationsfelder) über Makro
Verfasst: Di, 29.03.2005 18:44
von willie
Hallo Forum,
ist es möglich die Listen in Kombinations- oder Listenfeldern in Formularen über ein Makro zu füllen?
Ich könnte mir vorstellen, dass dies ähnlich dem Füllen oder Auslesen der Feldinhalte funktioniert. Ein Feld "Kurztext" fülle ich z.B. mit
DIM oDoc As Object
DIM oPage As Object
DIM oForm As Object
Dim oField As Object
Dim Ergebnis As String
oDoc = thisComponent
oPage = oDoc.DrawPage
oForm = oPage.Forms.GetByIndex(0)
hier steht die Ermittlung der Variablen Ergebnis
oField = oForm.GetByName("Kurztext")
oField.Text = Ergebnis
Anstatt der Methode Text in der letzten Zeile müsste dort eine Methode stehen mit der ich die Liste Füllen kann. Am besten sogar mit dem Result-Set einer SQL-Abfrage.
Mit freundlichen Grüßen
Willie
Verfasst: Di, 29.03.2005 20:43
von Frank Lauer
Ich hab noch nicht mit Formularen gearbeitet, in Dialogen funktioniert das Füllen jedoch folgendermaßen:
Liste.addItem(Text as String,Position as Integer)
Verfasst: Mi, 30.03.2005 11:24
von willie
Hallo,
so in der Art habe ich mir das auch gedacht, nur leider kapiere ich noch nicht wie ich an die Liste herankomme. Wenn ich in dem oben genannten Bespielcode anstatt " oField.Text = Ergebnis " einfach "addItem = ("" & Ergebnis & "", 2)" eingebe kommt die Fehlermeldung Eigenschaft oder Methode nicht gefunden, was wohl darauf zurückzuführen ist, dass oField nicht die Liste sondern das Feld angibt.
Leider hilft mir das StarOffice-Programmierhandbuch auch nicht weiter. Dort gibt es zwar unter Forms einen Abschnitt "Accessing The View Of Control Element Forms", aber "blicken tu ichs" leider nicht.
Währe klasse wenn mir jemand mit etwas Code weiterhelfen könnte.
Mit freundlichen Grüßen
Willie
Verfasst: Mi, 30.03.2005 14:17
von Stephan
Wenn ich in dem oben genannten Bespielcode anstatt " oField.Text = Ergebnis " einfach "addItem = ("" & Ergebnis & "", 2)" eingebe kommt die Fehlermeldung Eigenschaft oder Methode nicht gefunden, was wohl darauf zurückzuführen ist, dass oField nicht die Liste sondern das Feld angibt.
? Ich denke Dir liegt das StarBasic-Programmierhandbuch vor?
Dort gibt es zwar unter Forms einen Abschnitt "Accessing The View Of Control Element Forms", aber "blicken tu ichs" leider nicht.
Exakt dort steht warum das nicht geht was Du vor hast. Du kannst das mit AddItem nur auf das view und nicht auf das Model- Objekt des Steuerelements verwenden.
Hier 2 Beispielcodes aus dem Programmierhandbuch:
View-Objekt eines Steuerelements:
Code: Alles auswählen
Dim Doc As Object
Dim DocCrl As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim CtlView As Object
Dim I as Integer
Doc = StarDesktop.CurrentComponent
DocCrl = Doc.getCurrentControler()
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count - 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("MyListBox") Then
Ctl = Form.GetbyName("MyListBox")
CtlView = DocCrl.GetControl(Ctl)
Exit Function
End If
Next I
Model-Objekt eines Steuerelements:
Code: Alles auswählen
Dim Doc As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim I as Integer
Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count - 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("MyListBox") Then
Ctl = Form.GetbyName("MyListBox")
Exit Function
End If
Next I
Ja und nun steht im Programmierhanbuch nichts über das Kombinationsfeld, was dort über das Listenfeld steht ist aber äquivalent anwendbar:
"...
Das Model-Objekt der Formular-Listboxen hält folgende Eigenschaften bereit:
...
StringItemList (Array of Strings) – Liste sämtlicher Einträge.
...
...
Zusätzlich stehen über das View-Objekt der Listbox folgende Methoden zur Verfügung:
...
addItem (Item, Pos) – fügt die in Item angegebene Zeichenfolge an der Position Pos in die Liste ein.
addItems (ItemArray, Pos) – fügt die in dem Zeichenfolgen-Datenfeld ItemArray aufgeführten Einträge in die Liste an der Position Pos ein
...
..."
Außerdem habe ich hier eine Zusammenstellung von nützlichen Materialien ins Forum gestellt:
viewtopic.php?t=1553
Dort findet sich auch für die Combobox ein Beispiel (Überschrift "Beispieldateien" vierter Link). Außerdem nützlich das Developersguide (ebenfalls dort) und das SDK (Software Development Kit), bisher noch nicht dort, aber jetzt ergänzt.
Gruß
Stephan
Verfasst: Fr, 01.04.2005 11:10
von willie
Hallo,
Danke erstmal. Jetzt verstehe ich nur nicht wieso bei mir bei der Zeile "DocCrl = Doc.getCurrentControler()" immer die Fehlermeldung "Eigenschaft oder Methode nicht gefunden" kommt??
Mit freundlichen Grüßen
Willie
Verfasst: Fr, 01.04.2005 12:36
von Stephan
Nun ja, auch Moderatoren machen Fehler. Insbesondere auch dann wenn sie Quelltext unkritisch aus Handbüchern ins Forum kopieren:
falsch:
richtig:
außerdem mußt Du das Makro starten wenn das Formular sichtbar ist (und nicht aus der IDE heraus), sonst verwende statt:
das:
Gruß
Stephan