[Gelöst] Name einer ListBox auslesen

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

Moderator: Moderatoren

GrobMakrobiker
**
Beiträge: 39
Registriert: Mo, 09.02.2009 20:18

[Gelöst] Name einer ListBox auslesen

Beitrag 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
Zuletzt geändert von GrobMakrobiker am Di, 27.07.2010 20:42, insgesamt 1-mal geändert.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Name einer ListBox auslesen

Beitrag 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)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
GrobMakrobiker
**
Beiträge: 39
Registriert: Mo, 09.02.2009 20:18

Re: [Gelöst] Name einer ListBox auslesen

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [Gelöst] Name einer ListBox auslesen

Beitrag 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.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten