Über Dialog in fremdes Dokument schreiben?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Über Dialog in fremdes Dokument schreiben?

Re: Über Dialog in fremdes Dokument schreiben? [gelöst]

von Steffan » Fr, 01.10.2010 10:23

Hallo Stephan,

vielen Dank, so funktioniert es.

Steffan

Re: Über Dialog in fremdes Dokument schreiben?

von Stephan » Fr, 01.10.2010 08:48

ich habs jetzt nicht weiter getestet (DEin Problem ist zwar interessant, ich habe aber wenig Zeit) würde aber sagen es liegt am zentralen Makro wo Du dafür sorgen must das der Dialog initialisiert wird bevor der 'ThisComponent-Fokus' (*) das Dokument verlässt, verwende:

(*)
naja, wie nenne ich das sonst, es geht hier nicht um das eigentliche Dokument-Objekt sondern nur um seinen Bezug im Zusammenhang mit ThisComponent

Code: Alles auswählen

dim oDoc as object
Dim oDia As Object '(!)


sub createDoc

	Dim mArgs()
'Dialog laden und anzeigen
	DialogLibraries.LoadLibrary("Standard")
	oDia=CreateUnoDialog(DialogLibraries.Standard.dia1)
	'an dieser Stelle (!):
	oDoc = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank", 0, mArgs())
	oDia.Execute
end sub
den fokus mußt Du dann ggf. noch auf das neue Dokument setzen, damit es sichtbar/aktiv ist.



Gruß
Stephan

Re: Über Dialog in fremdes Dokument schreiben?

von Steffan » Do, 30.09.2010 16:48

Hallo DPunch,

erst mal vielen Dank für Deine Antwort.
Die Idee mit Makros in der öffentlichen Bibliothek finde ich nicht so toll. Der Charme meines Steuerdokuments ist ja, dass es schreibgeschützt im Netzwerk liegt und jeder Rechner darauf zugreifen kann und so ohne lästige "lokale" Nachinstallationen alle Makros beim Öffnen dieses Dokuments zur Verfügung habe.
Aber zumindest weiß ich jetzt woran es liegt.
Ich werde jetzt wohl so verfahren, dass ich Daten zuerst sammle und als letztes das neue Dokument öffne und alles in einem Rutsch reinschreibe.

Beste Grüße,
Steffan

Re: Über Dialog in fremdes Dokument schreiben?

von DPunch » Do, 30.09.2010 15:50

Aloha

Durch das Laden des Dokuments erhält dieses automatisch den Fokus.
Der daraufhin geladene Dialog ist sozusagen an das aktive Fenster "gebunden" - Makro-Aufrufe über diesen Dialog werden also im neu geladenen Dokument gehandled.
Dort gibt es die Prozeduren "insert1" bzw "insert2" aber nicht, daher werden diese auch nicht gestartet.

Eine Möglichkeit wäre, die Makros nicht im Dokument selber zu halten, sondern in einer "öffentlichen" Bibliothek (also z.B. Meine Makros & Dialoge -> Standard).

Über Dialog in fremdes Dokument schreiben?

von Steffan » Do, 30.09.2010 12:06

Hallo zusammen,

ich habe folgendes Problem:
Ich habe ein Writer-Dokument, dass als Steuerdokument für verschiedene andere Anwendungen dienen soll.
Das heißt, das Dokument enthält Schaltflächen, Makros und Dialoge über die andere Dokumente erstellt, geöffnet und modifiziert werden.
Jetzt möchte ich aus dem Steuerdokument beispielsweise folgendes tun:
- ein neues Writer-Dokument öffnen (klappt)
- einen im Steuerdokument gespeicherten Dialog aufrufen (klappt)
- bei Klick auf eine Dialogschaltfläche Text in das neue Dokument schreiben (klappt nicht)

Obwohl der Dialog-Schaltfläche ein Makro zugeordnet ist, dass den Text einfügt, wird das einfach nicht gestartet. Warum? Habe ich irgendeinen Denkfehler?
Hier der Code:

Code: Alles auswählen

REM  *****  BASIC  *****

dim oDoc as object

sub createDoc
'neues leere Writer-Dokument erstellen
	Dim mArgs()
	oDoc = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank", 0, mArgs())
'Dialog laden und anzeigen
	DialogLibraries.LoadLibrary("Standard")
	oDia=CreateUnoDialog(DialogLibraries.Standard.dia1)
	oDia.Execute
end sub

sub insert1
'Ausführung bei Klick auf die erste Schaltfläche des Dialoges
	insert(1)
end sub

sub insert2
'Ausführung bei Klick auf die zweite Schaltfläche des Dialoges
	insert(2)
end sub

private sub insert(i as integer)
'Dialog schließen
	oDia.EndExecute
'Text einfügen
	oText = oDoc.text
	oCursor = oText.createtextcursor()
	oText.insertString(oCursor, "Text" & str(i),false)
end sub

Zur Erläuterung lege ich eine kleines Beispiel für das Steuerdokument bei, das den Makro-Code und den Dialog enthält.

Wäre schön, wenn mir jemand helfen könnte.
Vielen Dank im Voraus,
Steffan
testDialog.odt
Beispiel für Steuerdokument
(11.17 KiB) 54-mal heruntergeladen

Nach oben