toolbar erzeugen

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

Moderator: Moderatoren

kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

toolbar erzeugen

Beitrag von kannenklaus »

hallo gruppe,

mit folgendem code will ich eine toolbar erstellen.

Code: Alles auswählen

Option Explicit
Sub ToolbarErzeugen
Dim sToolbar as String, sMyToolbarCmdId as String
Dim oCfgSupplier as Object
Dim aToolbareintrag
Dim oToolBarEinstellung
Dim aToolbarItem
sToolbar = "private:resource/Toolbar/MyToolbar"
sMyToolbarCmdId = "vnd.openoffice.org:MyFunction"
oCfgSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oCfgSupplier=thisComponent.getUIConfigurationManager()
oToolBarEinstellung = oCfgSupplier.createSettings()
oToolBarEinstellung.UIname="MyToolbar"
aToolbareintrag = ToolbareintragErstellen("macro:///Standard.Module1.Test()","Test")
oToolBarEinstellung.insertByIndex(0, aToolbarItem )	'oToolBarEinstellung.insertByIndex(1, aToolbareintrag)
'oToolBarEinstellung.insertByIndex(2, aToolbareintrag)

if oCfgSupplier.hasSettings(sToolbar) then
	oCfgSupplier.replaceSettings(sToolbar,oToolBarEinstellung)
else
	oCfgSupplier.insertSettings(sToolbar,oToolBarEinstellung)
end if

end Sub

Function ToolbareintragErstellen (Command as String, Label as String) as Variant
Dim aToolbareintrag(2)as New com.sun.star.beans.PropertyValue
	aToolbareintrag(0).Name ="CommandURL"
	aToolbareintrag(0).Value ="Command"
	aToolbareintrag(1).Name ="Label"
	aToolbareintrag(1).Value ="Label"
	aToolbareintrag(2).Name ="Type"
	aToolbareintrag(2).Value="0"
end Function

Sub Test
msgbox("sauberle")
end sub
in der codezeile

Code: Alles auswählen

oToolBarEinstellung.insertByIndex(0, aToolbarItem )
kommt die fehlermeldung:

basic laufzeitfehler
es ist eine exception aufgetreten
type:com.sun.star.langIllegalArgumentException
message: Type must be com::sun::star::uno::Sequence<
com::sun::star::beans::PropertyValue>

weiß jemand rat?

danke

klaus
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

Auf einen schnellen Blick würde sagen die Zeile müßte

Code: Alles auswählen

oToolBarEinstellung.insertByIndex(0, aToolbarEintrag ) 
lauten.
aToolbaritem wird von dir nicht gesetzt

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo michael,

auch wenn ich toolbareintrag verwende, kommt die gleiche fehlermeldung.

hat jemand ne idee?

grüße

klaus
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Beitrag von komma4 »

a) Eine Function gibt einen Wert zurück. Fehlt.
b) Innerhalb von Function deklarierte Variable ist ausserhalb nicht sichtbar (doppeltes DIM aToolbareintrag).
c) wenn mich nicht alles täuscht erwartet oToolBarEinstellung.insertByIndex ein Array als 2. Parameter, also: (0, aToolbareintrag())

HTH
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)
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

Hallo Klaus,

kannst Du bitte zukünftig Deinen Code erstmal selber gründlich prüfen.
Es ist müßig bei Problemen zu helfen wenn man sich erstmal durch grundsätzliche Fehler durchhangeln muß.

1. In der Funktion Toolbareintragen erzeugst Du keinen Rückgabewert.
(Hat komma4 schon geschrieben)
2. In der Funktion Toolbareintragen übergibst als ersten Wert für die Commandurl "Command" als festen String. Übergeben werden muß aber die Variable Command.
3. Genauso verfährst Du bei Label.
4. Nach dem Du die Funktion aufgerufen hast verwendest Du die falsche Variable aToolbarItem (Habe ich schon geschrieben)

Das sind alles Fehler die Du selber sehen müsstest. Du hast hier schon reichlich Code gepostet und Fragen gestellt um diese "Schusseligkeiten" selber zu lösen.

Wenn Du diese Fehler beseitigt hast, wirst Du eine Fehlermeldung bei
oCfgSupplier.....Settings(sToolbar,oToolBarEinstellung) bekommen.
(:lang::IllegalArgumentException)
Ursache ist sToolbar. Die ResoucreUrl muß
sToolbar = "private:resource/toolbar/MyToolbar"
lauten. Die internen Namen der resourcen werden klein geschrieben.

Wenn das Makro jetzt gelaufen ist steht unter Ansicht - Symbolleisten "MyToolbar" zur Verfügung.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo michael,

da muß ich ein bißchen viel asche auf mein haupt nehmen

grüße

klaus
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo michael,

ich will doch noch auf den ein oder anderen punkt zu deiner antwort eingehen, da ich dich hier und deine beiträge schätze:
kannst Du bitte zukünftig Deinen Code erstmal selber gründlich prüfen.
der code, die schreibweisen sowie das trennen in sub und function kommt aus dem buch openoffice.org basic erschienen im cul-verlag. das makro lief dort nicht auf anhieb. meine "experimente" u.a. mit "command" gehen auch auf bisher gemacht erfahrungen mit
Dim aToolbareintrag(2)as New com.sun.star.beans.PropertyValue
zurück. hier leider ohne erfolg.
4. Nach dem Du die Funktion aufgerufen hast verwendest Du die falsche Variable aToolbarItem (Habe ich schon geschrieben)
punkt 4 muß ich voll auf meine kappe nehmen.
Du hast hier schon reichlich Code gepostet und Fragen gestellt
der openoffice code erschließt sich einem programmierer viel eher, als jemand der als anwender einsteigt und sich die programmierung erschließen muss. deswegen überwiegen für meinen teil fragen. dafür sollte ein forum da sein. erfahrene leute wie du, geben dabei zwangsläufig mehr als sie bekommen können. meinen möglichkeiten entsprechend, versuche ich seit kurzem auch auf fragen zu antworten und code zu posten.

leider wird man eher in einem forum mit offener software abgewatscht, als in einer gruppe des marktführers.

grüße

klaus
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

Hallo Klaus,

es tut mir leid das Du es etwas falsch verstehst.
der code, die schreibweisen sowie das trennen in sub und function kommt aus dem buch openoffice.org basic erschienen im cul-verlag.
Die Schreibweisen sind nicht das Problem.

Das Problem ist Code mit zu vielen Fehlern. Und einige dieser Fehler hätten Dir selber auffallen müssen. Dazu bist schon zu lange mit Basic beschäftigt.

Und mal ehrlich wenn es nur ein Fehler gewesen wäre, hätte ich nichts angemerkt. Aber vier sind ein wenig viel. Wie in allen Gruppen, auch denen des Marktführers, gilt: Erst mal selber suchen. Und wenn es dann immer noch nicht klappt fragen.

Du mußt es andersherum sehen. Wenn ich mehrmals über Code von jemanden stolpere der zu viele Fehler hat, werde ich mir den Code nicht mehr anschauen. Und dementsprechend auch nicht helfen.
Es kostet mich nämlich auch Zeit. Und man kann von denen die Fragen stellen, die ich wenn ich kann gerne beantworte, auch erwarten das sie ihre Hausaufgaben gemacht haben.

leider wird man eher in einem forum mit offener software abgewatscht, als in einer gruppe des marktführers.
Sorry, das Du es als abwatschen siehst. Ich sehe als Aufforderung Deinen Programmierprozeß zu verbessern. Je mehr grundsätzliche Fehler Du selbst erkennst, desto schneller löst Du Deine Probleme in Zukunft selber.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo michael,
desto schneller löst Du Deine Probleme in Zukunft selber.
da will ich auch hin.

auf jeden fall finde ich dein engagement in diesem fall und auch sonst im zusammenhang mit deiner starbasic faq und hier in der gruppe vorbildlich.

grüße

klaus
Antworten