Selektion aus Listbox Makro starten

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

Moderator: Moderatoren

turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Selektion aus Listbox Makro starten

Beitrag von turtle47 »

Hallo Zusammen,

habe mal wieder ein Problem.

Mit folgendem Code rufe ich in einem Dialog bei einer Auswahl aus einer Listbox andere Makros auf:

Code: Alles auswählen

Sub StartDialog1
	DialogLibraries.LoadLibrary("Extras")
	oForm = DialogLibraries.Extras.Dialog1
	oDialog = createUnoDialog(DialogLibraries.Extras.Dialog1)
	oDialog.execute
end sub 


Sub MeinMakro
	BasicLibraries.LoadLibrary("Extras")

	inhalt = oDialog.GetControl("ListBox1")
	Select Case inhalt.selectedItem

	Case "Erster Eintrag"
    Makro1
      
    Case "Zweiter Eintrag"
    Makro2
    
    End Select

End Sub
Das funktioniert einwandfrei.
Wie muss der Code lauten wenn sich die Listbox sich nicht in einem Dialog befindet
sondern sich direkt in einem Tabellenblatt befindet.
Habe bei meiner Suche nur Beispiele gefunden die mir Ergebnisse in Verbindung
mit Dialogen angezeigt haben.

Vielen Dank im Vorraus.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Jürgen,

na ja, im Grunde so ähnlich ;-)

Wenn sich die Listbox direkt im Dokument befindet, ist sie immer Teil eines Formulars. Also musst du Sie zuerst so erhalten (Bsp Calc, Tabelle1, 1. Formular):

Code: Alles auswählen

oCtr = thisComponent.sheets.getByName("Tabelle1").drawpage.forms(0).getByName("Listbox1")
Die Listbox selbst hat jetzt diverse Eigenschaften, unter anderem die "SelectedItems", immer als Array (Short). Auf der anderen Seite gibt es die StringItemList - als Array. Diese listet die Inhalte der Listbox auf. Aus beiden kombiniert erhälst du die gewählten Einträge:

Code: Alles auswählen

dim aListe()
dim aSelektion()
aListe = oCtl.stringItemList   'die Liste der Einträge
aSelektion = oCtl.selectedItems   'die Liste (positionen) der gewählten Einträge
msgbox aListe(aSelection(0))  ' erster gewählter eintrag
Na ja, und der Rest ist dann wie gehabt...

Gruss Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Beitrag von turtle47 »

Hi Thomas

ersmal Danke für die Ausführungen bekomme das aber trotzdem nicht hin. :oops:

Irgendwie stehe ich mit den Objektvariablen auf Kriegsfuss. :twisted:

Wähle ich jetzt einen Eintrag in der Listbox dann kommt an folgender Stelle:

Code: Alles auswählen

aListe = oCtl.stringItemList   'die Liste der Einträge
eine Fehlermeldung.
Obektvariable nicht gefunden
Habe es mal so versucht zuzuweisen:

Code: Alles auswählen

dim aListe as String
Leider ohne Erfolg.
Kann es sein das die Listbox1 nicht gefunden wird?

Freue mich auf Antwort.

Viele Grüße

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo Jürgen
Evtl. liegt daran das ein 'r' eben kein 'l' ist:
(falls du den Code von Thomas etwas zu unkritisch übernommen hast):
Code:
oCtr =
aListe = oCtl......
falls nicht, entschuldige die dumme Antwort, falls doch - sowas passiert mir auch immer wieder . :?

Gruß Karo
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Beitrag von turtle47 »

Hallo Karolus,

Du hast Recht gehabt.
Evtl. liegt daran das ein 'r' eben kein 'l' ist:
Wer lesen kann ist eben klar im Vorteil.
sowas passiert mir auch immer wieder
Wo gehobelt wird da fallen Späne.

Thomas schrieb:
Na ja, und der Rest ist dann wie gehabt...

Code: Alles auswählen

.
.
.
aListe = oCtr.stringItemList   'die Liste der Einträge
aSelektion = oCtr.selectedItems   'die Liste (positionen) der gewählten Einträge
aListe(aSelection())  ' erster gewählter eintrag
inhalt = oCtr.aSelection("Listbox1")
    Select Case inhalt.selectedItem
    Case "Test"
    Makro1
     
    Case "Hallo"
    Makro2
   
    End Select
End Sub
Kommt aber wieder eine Fehlermeldung an der Stelle:

Code: Alles auswählen

inhalt = oCtr.aSelection("Listbox1")
Eigenschaft oder Methode nicht gefunden.
Was ist nun schon wieder los?

Viel Grüße

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Jürgen,

erst mal sorry für die "Buchstaben-Missmatch", passiert im schnellen Tippen ;-)

Zum Code:

Code: Alles auswählen

....oCtr.aSelection("Listbox1")
Was soll das denn sein?

Also, zurück: Mein Code sollte dir den ersten gewählten eintrag in einer Msgbox anzeigen lassen, den kannst du dann natürlich auch in eine Varaible packen - und mit der weiterarbeiten....
Es müsste dan so aussehen:

Code: Alles auswählen

dim aListe()
dim aSelektion()
aListe = oCtl.stringItemList   'die Liste der Einträge
aSelektion = oCtl.selectedItems   'die Liste (positionen) der gewählten Einträge
sInhalt = aListe(aSelection(0))  ' erster gewählter eintrag 
Select Case sInhalt
    Case "Test"
    Makro1
     
    Case "Hallo"
    Makro2
   
End Select 
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Beitrag von turtle47 »

Hi Thomas,
das mit dem Verstaben buchwechseln ist doch kein Problem. :)

Zum Code:
"mea culpa". :cry:

Irgendwann verstehe auch ich es.
Aber das wird wohl noch ne ganze Weile dauern.

An beide vielen Dank und schönes Restwochenende.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Antworten