Seite 1 von 1

[Gelöst] Name einer ListBox auslesen

Verfasst: Di, 27.07.2010 13:58
von GrobMakrobiker
Hallo zusammen,

ich fülle in Calc mehrereListboxen, indem ich ihr einen Zellbereich zuweise:

Code: Alles auswählen

DialogLibraries.LoadLibrary( "Standard" )
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oController = starDesktop.CurrentFrame.Controller     
objBlatt = ThisComponent.Sheets().getByName("Listen")
ThisComponent.CurrentController.setActiveSheet(objBlatt)
 
sBereichsname = "Zielgruppe"
oListe =objBlatt.getCellRangeByName(sBereichsname).GetDataArray()  

oListBox=objBlatt.DrawPage.Forms.GetByIndex(0).GetByName("ListBox" & nZaehler)
Redim Preserve sListe(UBound(oListe())) As String
For n2 = LBound(sListe()) To UBound(sListe())
      oEintrag()   = oListe(n2)
      sListe(n2) = oEintrag(0)
    Next n2
oListBox.StringItemList = sListe()
xray oListBox
xray zeigt an, dass die ListBox beim Erzeugen den Namen "ListBox11" hat.

Wenn ich die Liste ändere, soll ein Makro aufgerufen werden, das den aktualisierten Wert in eine Zelle schreibt.
Wie kann ich den Namen der soeben angeklickten ListBox (im Beispiel oben: ListBox11) auslesen?

Ein Zugriff ist möglich:

Code: Alles auswählen

n = 11
oListbox=objBlatt.DrawPage.Forms.GetByIndex(0).GetByName("ListBox" & n)'.GetIndex
ist problemlos möglich, hilft aber nicht, da man ja den Namen erfahren möchte. Eine Schleife über alle ListBox-Elemente auf dem Tabellenblatt würde ja auch die anderen ListBoxen erwischen... Man müsste also den Namen der angeklickten ListBox rausrkiegen.

Eine Abrage á la

Code: Alles auswählen

 strName = oListbox.Name 
leider nicht.

Ich hab schon lange gesucht & gegoogelt, hier, bei Andrews Makros und in der api, aber anscheinend verstehe ich nicht, an welcher Stelle man ansetzen muss.

Für (kleinere oder größere) Hinweise wäre ich sehr dankbar!

LG Groby

Re: Name einer ListBox auslesen

Verfasst: Di, 27.07.2010 17:16
von komma4
Weise das folgende Makro dem Listbox-Ereignis: Modifiziert zu, dann sagt Dir das Nachrichtenfenster, welche Listbox geklickt wurde

Code: Alles auswählen

Sub de40587( oEvent )

print oEvent.Source.Model.Name

End Sub

Hilft das?

Wenn ja: war das ein kleiner oder grösserer Hinweis? 8)

Re: [Gelöst] Name einer ListBox auslesen

Verfasst: Di, 27.07.2010 20:59
von GrobMakrobiker
Lieber Winfried,

ja, das hilft!

Ob es nun eine große oder kleine Hilfe war, hängt nun mal wirklich vom Standpunkt des Betrachters ab. Für mich war sie groß --- für dich auch?

Allerdings habe ich ewig in der api.openoffice.org, im Developer Guide, Andrews Makros, den anderen von Stephan empfohlenen Quellen (und mit XRay) rumgesucht. Anscheinend fehlt es mir da an Basis bzw. Basic- Kenntnissen. Wie hätte man als Einsteiger darauf kommen können, dass das mit Source.Model.Name geht?
Nur der Verständnis-Logik halber und ohne über fehlende Dokus zu jammern (http://www.oooforum.de/viewtopic.php?f= ... 98&start=0) ;-)

Vielen Dank jedenfalls für den Tipp!

Groby

Re: [Gelöst] Name einer ListBox auslesen

Verfasst: Mi, 28.07.2010 03:30
von komma4
GrobMakrobiker hat geschrieben:Für mich war sie groß --- für dich auch?
:)


Nunja... als Du schriebst
GrobMakrobiker hat geschrieben:Namen der soeben angeklickten ListBox (im Beispiel oben: ListBox11) auslesen?
wusste ich schon -aus Erfahrung- dass hier ein Ereignis ( event ) greift.

Von da war es zur Lösung nicht mehr weit.
Viele Sachen haben sich über die Jahre auch in meiner Krabbelkiste (zum Ausprobieren) angesammelt.

Ausgangspunkt ist eigentlich immer die Tatsache, dass die meisten Fragen bereits einmal gestellt -und meist auch beantwortet- wurden.

Andrew Pitonyak hat mir mit den Beispielen in seinem Dokument die "Augen" für die OOo-Programmierung geöffnet.
Und DannyB hat im englischen Forum einfach sehr viel Beispiele und Tricks gezeigt.

Mit Zeit kommt Wissen.

Dir und allen anderen noch viel Spass mit OOo und dessen Programmierung.