Symbolleisteneintrag für in Dokumenten gespeicherte Makros

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

Moderator: Moderatoren

benny-k
Beiträge: 6
Registriert: Do, 29.06.2006 16:32

Symbolleisteneintrag für in Dokumenten gespeicherte Makros

Beitrag von benny-k »

Hallo,
habe folgendes Problem:

Ich habe eine Vorlage in OO-Draw erstellet, in der ich Makros verwende, die als Symbol über eine Symbolleiste erreichbar sein sollen.
Da die Vorlage auf verschiedenen Rechnern verwedet wird, habe ich die Makros in der Vorlage gespeichert.
Über Extras-->Anpassen-->Tastatur geht es nicht, da dort nur "user und share"-Makros sind
Hat jemand eine Idee wie ich diese Makros in die Symbolleiste bekomme, oder evtl. über Tastenkürzel zu erreichen?

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

Beitrag von Stephan »

Da die Vorlage auf verschiedenen Rechnern verwedet wird, habe ich die Makros in der Vorlage gespeichert.
Über Extras-->Anpassen-->Tastatur geht es nicht, da dort nur "user und share"-Makros sind
Das kann nicht stimmen, wenn die Makros in der Dokumentvorlage sind und diese geöffnet ist sind die Makros auch dort erreichbar.

Allerdings wirst Du für Symbolleisten nicht:
Extras-->Anpassen-->Tastatur
sondern
Extras-->Anpassen-->Symbolleisten benötigen.



Gruß
Stephan
benny-k
Beiträge: 6
Registriert: Do, 29.06.2006 16:32

Beitrag von benny-k »

Allerdings wirst Du für Symbolleisten nicht:
Extras-->Anpassen-->Tastatur
sondern
Extras-->Anpassen-->Symbolleisten benötigen.
Stimmt, habe ich eigentlich auch gemeint.

Vielleicht habe ich mich auch ein wenig ungenau ausgedrückt.
Es soll je ein spezielles Makro über genau ein Symbol (Button) erreicht werden, und nicht erst
  • Extras --> Makros --> Mokro ausführen
oder so ähnlich. Das ist für meine Zwecke zu umständlich.

Eine andere Idee war, Tastenkürzel zu definieren. Jedoch habe ich keine Ahnung, wie ich es hinbekomme, dass die Tastenkürzel nur für diese Vorlage -aber auf jedem Rechner, der die Vorlage verwendet- zur Verfügung stehen.

Wenn mir da jemand weiterhelfen könnte :D

Danke
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey benny,
Jedoch habe ich keine Ahnung, wie ich es hinbekomme, dass die Tastenkürzel nur für diese Vorlage -aber auf jedem Rechner, der die Vorlage verwendet- zur Verfügung stehen.
Da hast du dir zu viel vorgenommen: OOo Byasisprogramm und Dokumente sind zwei "verschiedene Paar Schuhe". Willst du eine Vorlage verteilen - also auf unterschiedlichen Rechnern ausführen - dann musst du auch die Startsequenz im Dokument unterbringen.
1. Der einfachste Weg: einen Button eingügen und mit dem Makro verbinden.

2. Mit viel Aufwand: ein Makro schreiben, dass eine eigene Symbolleiste in der Rahmen-Applikation (also z.B. Draw) definiert und erzeugt, dieses Symbol wäre dann mit dem Makro verbunden. Das Symbolleisten-Makro verbindest du dann mit dem Ereignis "Dokument öffnen" .

Aber was spricht gegen die erste Lösung?

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
benny-k
Beiträge: 6
Registriert: Do, 29.06.2006 16:32

Beitrag von benny-k »

Danke, habe jetzt die entsprechenden Buttons.

Jedoch falls jemand ein Makro hat, das die Tastenkürzel entsprechend einstellt, wäre klasse!

Danke

Benny
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Hallo benny-k,

wie hast Du denn dein Problem gelöst. Ich habe nämlich ein ähnliches Problem und wäre an deiner Lösung sehr interessiert!

Vielen Dank im Voraus!

Zodiac
benny-k
Beiträge: 6
Registriert: Do, 29.06.2006 16:32

Beitrag von benny-k »

Habe folgendes Makro verwendet, müsste allerdings noch angepasst werden.

Code: Alles auswählen

Sub SetUpKeyBinding

Dim oModuleCfgMgrSupplier As Object
Dim oModuleCfgMgr As Object
Dim oWriterShortCutMgr As Object

Dim sCommand As String
Dim sLocCommand As String
Dim sMsg As String
Dim iMsgResult As Integer

	 ' Initialize strings (The Makro that will be set on the key)
	 sCommand = "vnd.sun.star.script:Standard.Module1.Duplizieren?language=Basic&location=document"
 
	' Retrieve the module configuration manager from central module configuration manager supplier
	oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")

	' Retrieve the module configuration manager with module identifier
	oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager("com.sun.star.text.TextDocument")
	oWriterShortCutMgr = oModuleCfgMgr.getShortCutManager
	
	Dim aKeyEvent As New com.sun.star.awt.KeyEvent
	With aKeyEvent
		.Modifiers = com.sun.star.awt.KeyModifier.MOD1 'API const for the CTRL key = 2
REM		.KeyCode = com.sun.star.awt.Key.F2 'API const for the T key = 531
		.KeyCode = com.sun.star.awt.Key.F5
	End With
	
	On Error Resume Next
	sLocCommand = oWriterShortCutMgr.getCommandByKeyEvent(aKeyEvent)
	On Error GoTo 0 'restore the error handler

	Select Case sLocCommand
	
		Case = "" 'no previous bindings
			oWriterShortCutMgr.setKeyEvent( aKeyEvent, sCommand )
			oWriterShortCutMgr.store
			
		Case = sCommand 'ok the key event is already used by our command
			'nothing to do
			
		Case Else 'the key event is already used by another command
		
			sMsg = "Die Tastenkombination ""CTRL+F2"" wird für das Kommando:" & Chr(10)
			sMsg = sMsg & sLocCommand & """ verwendet." & Chr(10) & Chr(10)
			sMsg = sMsg & "Soll die alte Tastenkombination mit der zum Dokument gehörigen geändert werden?"
					   
			iMsgResult = MsgBox( sMsg, 1)
			If iMsgResult = 1 Then
				oWriterShortCutMgr.removeKeyEvent( aKeyEvent)
				oWriterShortCutMgr.setKeyEvent( aKeyEvent, sCommand )
				oWriterShortCutMgr.store
			End If
			
	End Select
	
End Sub
Benny
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Vielen Dank benny-k!

Aber das betrifft ja jetzt die Tastaturkürzel. Ist zwar auch nicht schlecht, aber ich hatte gehofft, du hast das Problem mit den Symbolleisten gelöst.

Ich möchte mehrere verschiedene Makros in einer Dokumentvorlage für Writer per Icon anbieten. Ein Button im Dokument macht keinen Sinn, wenn es dann irgendwo fest im Dokument steht, weil die Makros als zusätzliche Navigations- und Bearbeitungswerkezuge dienen sollen.
Per Tastaturkürzel ist das schon sehr praktisch. Per eigenem Symbol wäre es noch besser.

Wo hast Du denn den Code her oder hast du das selbst geschrieben?

Hat jemand eine Idee, ob und wie das möglich ist?

ExtendedPDF wird ja per ZIP-File als Package eingebunden und bindet dann ein neues Symbol ein. Vielleicht kann ich ja so ein Package erstellen (ist das überhaupt der richtige Begriff?) Ein Blick in das ZIP-File war nicht so erhellend, ausser das es zwei Symbole gibt 16x16 Pixel und 26x26 Pixel als Bitmap-Datei und das die Steuerung per XML-Datei stattfindet. Hinter dem Button (oder den Buttons) stünde ja bloss ein kleiner Makro-Aufruf. So schwierig kann es doch nicht sein. Ich werde mal suchen, ob es über diesen Weg klappen könnte ...

Für jede weiterführende Idee bin ich dankbar!
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wo hast Du denn den Code her
http://www.google.de/search?num=20&hl=d ... meta=lr%3D

Ich möchte mehrere verschiedene Makros in einer Dokumentvorlage für Writer per Icon anbieten.

Hat jemand eine Idee, ob und wie das möglich ist?

die Lösung habe ich bereits genannt:

Extras-->Anpassen-->Symbolleisten

hierbei beachten das unten das Dokument eingestellt ist damit diese dort gespeichert werden.
ExtendedPDF wird ja per ZIP-File als Package eingebunden und bindet dann ein neues Symbol ein. Vielleicht kann ich ja so ein Package erstellen ...
das kannst Du, nur hat das nichts mit den von Dir gewünschten Symbolleisten in Dokumentvorlagen zu tun.

Nein, nicht weil ein Package keine Dokumentvorlage ist, sondern weil die per Package installierten Symbolleisten sich ganz anders verhalten als Symbolleisten in Dokumenten. Letztere stehen automatisch zur Verfügung wenn Du das Dokument öffnest.



Gruß
Stephan
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

http://codesnippets.services.openoffice ... tcuts.snip
hierbei beachten das unten das Dokument eingestellt ist damit diese dort gespeichert werden.
Tut mir leid, wenn ich mich so blöd anstelle, aber kann es sein, dass dieses Feature erst mit 2.0.x eingeführt wurde? Ich arbeite mit OOo 1.1.5 bzw. StarOffice 7 Product Update 5 und im Menü Extras - Anpassen... Dann Reiter "Symbolleisten" kann ich nirgendwo einstellen, dass die neue Symbolleiste nur im Dokument gespeichert werden soll.

Beim Bearbeiten der Symbolleiste auch nicht.

Hier mein Menü:
Bild
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Tut mir leid, wenn ich mich so blöd anstelle, aber kann es sein, dass dieses Feature erst mit 2.0.x eingeführt wurde?
Jein, das Speichern von Symbolleistenkombinationenen funktioniert in 1.x-Versionenen sogar etwas besser als in 2.0.x. Der Unterschied besteht in verschiedeer Bedienung.
Ich arbeite mit OOo 1.1.5 bzw. StarOffice 7 Product Update 5 und im Menü Extras - Anpassen... Dann Reiter "Symbolleisten" kann ich nirgendwo einstellen, dass die neue Symbolleiste nur im Dokument gespeichert werden soll.


Auch OOo 1.1.5 und SO 7 verfügen über eine kontexsensitive Hilfefunktion ud ein Druck auf die Hilfe-Schaltfläche im gezeigten Dialog bringt zumindest mich sofort zur passenden Stelle, wo es heißt:

"Speichern
Speichert die aktuelle Symbolleistenkonfiguration, damit sie künftig wieder eingeladen werden kann.
Konfiguration mit einem Dokument speichern"


Da der letzte Halbsatz als Link funtioniert gelange ich damit sofort zu richtigen Stelle der Hilfe die das Verfahren erläutert:

"Konfiguration mit einem Dokument speichern

Wenn Sie möchten, können Sie eine Konfiguration als global festlegen, sodass sie für alle Dokumente des jeweiligen Typs gilt, oder sie an nur ein bestimmtes Dokument binden, das bereits als Datei existieren muss.
1.Laden Sie das Dokument, mit dem Sie die Konfiguration verbinden wollen, oder aktivieren Sie ein beliebiges Dokument desselben Typs.
2.Stellen Sie die Konfiguration ein. Wählen Sie z. B. die Symbolleisten, die sichtbar sein sollen, oder definieren Sie die Belegung der Symbolleisten, die Einträge in den Menüs oder in der Statusleiste, usw. Alle Einstellmöglichkeiten finden Sie zusammengefaßt im Dialog Extras - Anpassen...
3.Klicken Sie auf Speichern... im Dialog Extras - Anpassen... Sie sehen einen Dialog zum Speichern der Konfiguration.
4.Im Listenfeld Dateityp wählen Sie den Eintrag <Alle>.
5.Wählen Sie im großen Listenfeld des Speichern-Dialogs die Datei aus, mit der Sie die Konfiguration verbinden wollen.
6.Klicken Sie auf Speichern. Sie werden jetzt gefragt, ob Sie die vorhandene Datei ersetzen wollen. Diese Frage bezieht sich nur auf die Konfiguration, nicht auf den Inhalt des Dokuments.
7.Bestätigen Sie das Überschreiben.
Jetzt ist die aktuelle Konfiguration mit dem im Dialog Speichern gewählten Dokument verbunden.
Sobald Sie dieses Dokument öffnen, wird die darin gespeicherte Konfiguration aktiviert. Öfffnen Sie ein anderes Dokument, das keine Konfiguration enthält, wird wieder die globale Standardkonfiguration aktiviert. Diese können Sie auch manuell aktivieren, indem Sie den Dialog Extras - Anpassen öffnen und auf Zurücksetzen klicken."




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

Beitrag von Stephan »

Ergänzung:
das Speichern von Symbolleistenkombinationenen funktioniert in 1.x-Versionenen sogar etwas besser


mir fällt gerade ein das das Speichern in einigen 1.1.x Versionen nicht funktionierte (ich weiß leider nicht konkret welche) das Problem ist zu umgehen indem Du einmalig die Symbolleistenkombination mit einer 1.0.x Version im Dokument speicherst. Weitere Änderungen im Dokument verändern daran dann nichts mehr an der Symbolleisteneinstellung im Dokument auch wenn sie in 1.1.x erfolgen.
Das Ganze sollte auch durch Korrektur an den (mit 1.1.x erzeugten) Dateien durch manuelle Korrektur möglich sein, sicherlich nicht komplizierter als ein Package zu erstellen, ich habe es nur nie praktisch durchgeführt und kann deshalb hier keine konkrete Auskunft geben was Du ändern mußt. Im Vergleich einer mit 1.0.x und einer mit 1.1.x erzeugten Datei sollte sich das Ganze aber lokalisieren lassen.


Gruß
Stephan
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Vielen, vielen Dank für deine Geduld!

Ich habe die Hilfe einfach schlampig gelesen. *Asche-auf-mein-Haupt-schütt*

Jetzt werde ich mal ausprobieren, alles zusammen zu bringen. Makros, Symbolleisten, Tastaturbelegung und das alles in einer Dokumentvorlage speichern.

Nochmal Danke!
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Ich habe noch eine Frage ...

Ich habe das jetzt ausprobiert. Ein Makro in der Datei gespeichert. Dann das Ganze als Dokumentvorlage gespeichert. Dann über Extras - Anpassen - Symbolleisten eine neue Symbolleiste angelegt und in die Vorlage gespeichert. Funktioniert auch soweit.

Folgendes ist aber merkwürdig:
Ich möchte meine Vorlage ja weitergeben. Also möchte ich nichts an den Einstellungen der Anwender ändern. Es soll also meine Symbolleiste nur zusätzlich angezeigt werden. Aber das Ausschalten der Symbolleisten schaltet sie wirklich aus. Lass ich das Häkchen dran, werden meine aktuellen Anpassungen an meine Symbolleisten ja auch gespeichert und überschreiben (zumindest für die Benutzung meiner Vorlage) die Vorgaben des Anwenders, was natürlich für mich nicht sinnvoll ist.

Gibt es eine Möglichkeit nur eine zusätzliche Symbolleiste einzublenden ohne andere Symbolleisten zu verändern?

P.S.: Auch sonst scheint das Ganze etwas hakelig zu sein. Beim ersten Speichern hat er die Icons rosa hinterlegt. Und die Information, ob er Symbol+Text, nur Text oder nur Icons zeigen soll, wechselt bei mir nicht korrekt ...
Benutzeravatar
Zodiac
**
Beiträge: 39
Registriert: Mi, 22.02.2006 00:57
Wohnort: Hamburg

Beitrag von Zodiac »

Nur der Vollständgkeit halber:
der zitierte CodeSnippet von http://codesnippets.services.openoffice ... tcuts.snip
funktioniert erst ab OOo 2.0, da dieser Aufruf http://api.openoffice.org/docs/common/r ... plier.html
erst ab OOo 2.0 möglich ist.

Bin immer noch auf der Suche und für jeden Tipp dankbar!

- Tastaturkürzel unter OOo 1.1.5 durch Makro setzen?
- zusätzliche Symbolleisten in OOo 1.1.5 durch Makro/Dokumentvorlage einfügen, ohne Veränderung der sonstigen Konfiguration?
Antworten