[gelöst] Probleme mit ComboBox über Makro

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

Moderator: Moderatoren

Bambuti2000
Beiträge: 5
Registriert: Mi, 23.06.2010 14:28
Kontaktdaten:

[gelöst] Probleme mit ComboBox über Makro

Beitrag von Bambuti2000 »

Hallo allerseits,

vielleicht ist jemand hier, der mir bei meinem Problem helfen kann.

Ich habe einigen Exceldateien mit selbst geschriebenen Makros. Eigentlich nichts besonders Schwieriges oder extrem Wichtiges, aber da es für einen Kindergarten ist, zählt natürlich der gute Wille zur Hilfe.
Nun ja, jedenfalls hat es sich nun so ergeben, dass Excel nicht mehr eingesetzt wird un man auf OpenOffice Calc umgestiegen ist. Meiner Meinung nach eine gute Entscheidung, aber es hat leider das Problem mit sich gebracht, dass die Makros nicht mehr funktionieren.
Ich dachte mir "ist ja kein Problem", hast'e ja in Excel auch hingekriegt. Pustekuchen :?
Ja nicht ganz, eigentlich klappt(e) es bis jetzt ganz gut und ich hab nun 3 von 5 Dateien angepasst. Aber bei der vierten hab ich ComboBoxen, und ich bekomme es nicht hin die (schon gefüllten) Boxen auszulesen und/oder zu setzten.
Folgendes Scenario:
Es gibt 20 Kontrollkästchen mit dem jeweils eine ComboBox "Enabled" wird und eigentlich eine Standardauswahl voreingestellt werden soll. Für den weiteren Verlauf der Aktion muss ich natürlich auch wissen welche (evtl. manuelle) Auswahl der ComboBoxen getroffen wurde.
Das die Boxen "Enabled/Disabled" werden hab ich hinbekommen, aber der Rest will noch nicht so ganz.
Ich hab nun seit ca. 4 Std. das Internet und div. Foren durchsucht, aber alle "Lösungen" funktionieren bei mir NICHT !!!
Zur Veranschaulichung:

Code: Alles auswählen

Sub ChangeCBState
For c = 1 To 20
'Funktioniert
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).Enabled = ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("cbBorder" & c).State

'Funktioniert alles nicht
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).getText
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).Text
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).SelectedItem
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).ItemCount
ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).AddItem("Bla", 0)
Next
End Sub
Hat da wer nen Lösungsansatz für mich?

Danke im voraus...
Bambuti2000


Moderation,4: Thread nach Wunsch des Authors als "gelöst" markiert. @Bambuti: ändern des Titels des ersten Postings!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Probleme mit ComboBox über Makro

Beitrag von DPunch »

Aloha

Du kriegst mit

Code: Alles auswählen

ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c)
das Model der Combobox, brauchst aber die Control.

Code: Alles auswählen

oComboboxModel = ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c)
oComboboxControl = ThisComponent.CurrentController.getControl(oComboboxModel)

oComboboxControl.addItem("Bla",0)
oComboboxControl.setText("Blubb")
nItemCount = oComboboxControl.ItemCount
Bambuti2000
Beiträge: 5
Registriert: Mi, 23.06.2010 14:28
Kontaktdaten:

Re: Probleme mit ComboBox über Makro

Beitrag von Bambuti2000 »

Hi DPunch,

danke schon mal für die Hilfe, ich wusste nicht das es ein seperates control gibt, da das "enable" ja funktioniert hat, und den Status von Checkboxen kann ich ja auch ohne control abfragen. Nun gut, es ist nun mal so, aber leider funktioniert es nur geringfügig besser als vorher.

Code: Alles auswählen

oComboboxControl.addItem("Bla",0)
oComboboxControl.setText("Blubb")
gibt mir nur eine Exception (im Dateianhang) aus (setText("Blubb") hab ich natürlich angepasst), aber

Code: Alles auswählen

nItemCount = oComboboxControl.ItemCount
funktioniert. Somit bin ich zwar ein Stück weiter, aber so 100%-tig noch nicht glücklich.
Ich werd dann mal wieder ein bischen weiter "experimentieren" :)
Dateianhänge
Exception bei addItem()
Exception bei addItem()
addItem_Exception.jpg (19.6 KiB) 1380 mal betrachtet
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Probleme mit ComboBox über Makro

Beitrag von komma4 »

Willkommen im Forum.


Dir - und allen anderen Neulingen im Thema sei [wiederholt] das erste Posting im BASIC-Unterforum Informationen zur StarBasic-Programmierung zum Lesen empfohlen.

Insbesondere Andrew's Macro Document und X-Ray sind wertvolle Hilfen.
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)
Bambuti2000
Beiträge: 5
Registriert: Mi, 23.06.2010 14:28
Kontaktdaten:

Re: Probleme mit ComboBox über Makro

Beitrag von Bambuti2000 »

Danke,
aber nachdem ich natürlich zuerst diesen Beitrag überflogen hatte und direkt auf diverse Fail-Links gestoßen bin,
hatte ich (wie bestimmt auch andere) ziemlich schnell die Lust daran verloren mich weiterhin durch "veraltete" (wenn auch hilfreiche) Dokumentation durchzuwühlen.
Zudem kommt natürlich das "Learning By Doing" immer noch meine Lieblingsmethode ist. Schließlich Programmier ich Hobbymäßig in Delphi und habs mit den VBA in Excel auch ohne Probleme geschafft.
Viel gerede, großer Unsinn,
auch an dieser Stelle Bedanke ich mich selbstverständlich für jegliche Hilfe und Anregungen... :D

... und nach einigen Versuchen hab ich meine Problematik nun wie folgt gelöst:

Code: Alles auswählen

Sub ChangeCBState
For c = 1 To 20
	ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).Enabled = ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("cbBorder" & c).State  'Enable/Disable ComboBox
	If (ThisComponent.CurrentController.getControl(ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c)).SelectedItem = "") And (ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c).Enabled) Then
		ThisComponent.CurrentController.getControl(ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c)).SelectItem(1, True)
	End If
Next
End Sub
Um den aktuellen Wert aus der CBox zu lesen/verwenden klappts so:

Code: Alles auswählen

ThisComponent.CurrentController.getControl(ThisComponent.Sheets(0).DrawPage.Forms(0).getByName("ComboBox" & c)).SelectedItem
Ich hoffe das ist auch in eurem Sinne in Ordnung, ansonsten bitte ich um Optimierungs-Vorschläge

Danke
Bambuti2000
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit ComboBox über Makro

Beitrag von Stephan »

aber nachdem ich natürlich zuerst diesen Beitrag überflogen hatte und direkt auf diverse Fail-Links gestoßen bin,
hatte ich (wie bestimmt auch andere) ziemlich schnell die Lust daran verloren mich weiterhin durch "veraltete" (wenn auch hilfreiche) Dokumentation durchzuwühlen.
Erstens sehe ich aktuell ganze 2 Links (http://www.der-linuxladen.de/linuxladen ... k-fakt.zip und http://www.bcwin.ch/ooo/basic/index.html) die nicht funktionieren. Zweitens solltest Du es als DEinen Beitrag der MIthilfe sehen solche Links zu melden und nicht hier einfach rumzureden, ein Forum von Freiwilligen funktioniert nämlich nur durch gegenseitiges Geben und Nehmen und eine Info das ein Link nicht mehr funktioniert wäre dann ein Teil des 'Gebens'.



Gruß
Stephan

P.S.
Korrekturen der obigen Links mache ich baldigst.
Bambuti2000
Beiträge: 5
Registriert: Mi, 23.06.2010 14:28
Kontaktdaten:

Re: Probleme mit ComboBox über Makro

Beitrag von Bambuti2000 »

Sorry,
aber ich wollte niemandem auf den Schlips treten (nur wer damit anfängt...).

Deadlinks:
OpenOffice.org Software Development Kit (SDK)

im Dokument „How to Use BASIC Macros in OpenOffice.org“
im Dokument Porting Excel/VBA to Calc/StarBasic
  • http://www.ooomacros.org/dev.php101416
    http://www.math.umd.edu/~dcarrera/openoffice/docs/
    (keine weiteren Links erlaubt...)
    api.openoffice.org/docs/DevelopersGuide/ProfUNO/ProfUNO.htm#1+Professional+UNO
    api.openoffice.org/docs/DevelopersGuide/BasicAndDialogs/BasicAndDialogs.htm#1+3+2+2+ThisComponent
    api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.htm#1+Office+Development
    api.openoffice.org/docs/DevelopersGuide/Spreadsheet/Spreadsheet.htm#1+4+2+1+Calculating+Function+Results
    api.openoffice.org/docs/DevelopersGuide/BasicAndDialogs/BasicAndDialogs.htm#1+3+2+1+StarDesktop
    api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.htm#1+1+5+1+Loading+Documents
    api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.htm#1+1+5+2+Closing+Documents
    api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.htm#1+1+5+2+Closing+Documents
http://api.openoffice.org/servlets/Read ... sgNo=10707 im Dokument Porting Excel/VBA to Calc/StarBasic
(hier ist der Link falsch, die angegebene Adresse würde aber funktionieren)

...ich hör mit dem Dokument jetzt mal auf (äschtz)...
... ich hab die PDF's noch nicht geprüft :wink:

Fahrtenbuch_Muster.sxc gefällt mir ganz gut aber gibt mir bei ändern des Ankunftsdatum eine Exception und beim "Setzen des Datensatzes" die Meldung Ankuftdatum dürfe nicht leer sein, obwohl es eingetragen ist.

Ich will auch garnicht drauf rumreiten, aber genau deshalb sag ich lieber nichts. Keiner ist perfekt und niemand kann alles, somit ist ei Forum wie hier sehr wichtig und lebt auch davon, aber direkt rumzustänkern man würde sich vorher nicht richtig informiert haben oder nicht ausreichend gesucht haben um ein Problem zu lösen finde ich oft unverschämt. Denn mit einer Dokumentation / Tuorials / Hilfen usw. die durch "Fehler" nur noch mehr Verwirrung stiften ist niemandem geholfen. "Um Gottes Willen" (darf man das hier sagen???), ich lobe und würdige die Arbeit die jemand dareingesteckt hat...

Nun gut wir sind ja nicht zum Zanken hier sondern um Probleme zu lösen und ALLEN damit zu helfen.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit ComboBox über Makro

Beitrag von Stephan »

aber ich wollte niemandem auf den Schlips treten (nur wer damit anfängt...).
Das heißt dann also es ist für Dich normales Vorgehen (im einem Forum wo sich Nutzer gegenseitig zu helfen versuchen) über erkannte Probleme zu polemisieren, statt zumindestens den Versuch zu unternehmen (indem man die Probleme meldet) zur Verbesserung beizutragen?


Im Konkreten kann ich jetzt eigentlich auch nur sagen das ich das was Du hier aufführst überhaupt nicht erwartet hätte, denn es war weder ersichtlich, noch zu vermuten, das Du Dich auch auf Linkfehler in den verlinkten Quellen beziehst.

Meine Antwort darauf ist:
es ist, hinsichtlich des Aufwands, nicht im Rahmen des Möglichen bei einer Linksammlung zu überprüfen das auch alle Links die in den verlinkten Inhalten existieren funktionieren - nicht einmal einmalig (zum Zeitpunkt der Erstellung der Linksammlung) und schon garnicht dauerhaft.
Da das so ist, wäre die einzige Alternative auf eine Linksammlung gänzlich zu verzichten, zumal ja auch mit der Feststellung das bestimmte Links, in den verlinkten Quellen, nicht funktionieren nichts gebessert wäre, da ich natürlich in den Quellen selbst garkeine Korrekturen vornehmen kann, sondern nur die Möglichkeit hätte DRitte darum zu bitten.

Mir scheinen das aber Binsenwahrheiten zu sein, denn ich kann mir einfach nicht vorstellen das jemand glauben könnte es sei möglich eine solche Linksammlung, in dem Sinne aktuell zu halten wie Du es hier andeutest ... DEine diesbezügliche Kritik ist deshalb einfach völlig überraschend für mich.
Fahrtenbuch_Muster.sxc gefällt mir ganz gut aber gibt mir bei ändern des Ankunftsdatum eine Exception und beim "Setzen des Datensatzes" die Meldung Ankuftdatum dürfe nicht leer sein, obwohl es eingetragen ist.
DAnn solltest Du solche Dinge einfach hier im Forum anfragen. Sicher freut sich auch Thomas (der Autor dieser Datei) über eine entsprechende Rückmeldung, aber da er wohl eher wenig Zeit hat wird er Dir nicht sofort direkt helfen, so das eine Frage hier im Forum wohl schneller zu einer Lösung führt.
"Um Gottes Willen" (darf man das hier sagen???),


Selbstverständlich darfst Du das hier sagen, nur ist für mich DEine Art der Betrachtung ganz unerwartet, denn eigentlich sieht doch jeder dem 'Augenmaß' nach das die Arbeit die aus Deiner Kritik abzuleiten wäre garnicht zu leisten ist - ich kann zwar überprüfen ob hier im Forum angegebene Links funktionieren (und wo sie das nicht tun ist sicher Kritik berechtigt), nur zu überprüfen ob in den verlinkten Zielen ihrerseits alle Links funktionieren ist schlicht unmöglich.
Wenn das Motto zusätzlich wäre das:
Denn mit einer Dokumentation / Tuorials / Hilfen usw. die durch "Fehler" nur noch mehr Verwirrung stiften ist niemandem geholfen.
wird man wohl nur auf die Linksammmlung verzichten können, denn ich werde niemals sicherstellen können das die Linkziele inhaltlich alle aktuell sind.



Gruß
Stephan
Bambuti2000
Beiträge: 5
Registriert: Mi, 23.06.2010 14:28
Kontaktdaten:

Re: Probleme mit ComboBox über Makro

Beitrag von Bambuti2000 »

OK,
ich denke nun ist gut mit Kritiken und Schuldzuweisungen.
Natürlich kann niemand seine verlinkten Dokumente / Quellen auf "funktionfähigen" Inhalt überprüfen.
Und nein, es ist für mich nicht selbstverständlich, erkannte Probleme/Fehler einfach so hinzunehmen. Nur da ich die Fehlerhaften Links bei meiner Suche nach einer Problemlösung nur innerhalb von Dokumenten gefunden hatte, habe ich diese nicht gemeldet.

Was "Fahrtenbuch_Muster.sxc" betrifft, es wäre mir wahrscheinlich nie aufgefallen, da ich die Datei nur aufgrund unserer Unterhaltung überprüft habe. Aber ich werde meine Fehler-Erfahrung an den Author weitergeben.

Ich denke das ein Forum (und dieses hier finde ich recht gut) den Zweck hat, und auch erfüllt, Probleme zu analysieren und Lösungen herbeizuführen. Eine Linksammlung darf dabei auf keinen Fall fehlen. Aber da es immer Besucher gibt, denen die Zeit oder das Interesse fehlt sich tief in Themen einzuarbeiten, sollte auch denjenigen die Möglichkeit gegeben sein über eine schnelle Foren-Kommunikation ihre Probleme zu lösen. Übrigens, ich gehöre nicht zu den gerade genannten.

Nichts desto trotz, wie schon erwähnt habe ich in der Linksammlung keine Lösung gefunden, ich gebe aber auch zu, das ich (wie auch schon erwähnt) über ein/zwei Dokumente gestolpert bin, die nicht ganz so geholfen haben wie ich dachte. Daraufhin habe ich auch nicht weiter die Dokus durchforstet, was man mir sicherlich verübeln kann. Dennoch wurde mir hier geholfen und meine Probleme sind gelöst.

Der Kindergarten / die Kinder werden sich sicherlich freuen...

Danke an Euch

PS: Wie kann ich das Thema als "gelöst" deklarieren? Hab schon danach gesucht aber nichts gefunden.
Antworten