Prozedur einem Dokument und anderen Objekten zuweisen?

Das Textverarbeitungsprogramm

Moderator: Moderatoren

theonlyrobi
Beiträge: 5
Registriert: Mo, 28.11.2005 19:53
Kontaktdaten:

Prozedur einem Dokument und anderen Objekten zuweisen?

Beitrag von theonlyrobi »

Hallo Leute,

ich bin gerade dabei, von VBA auf Basic umzulernen und habe gleich zu Beginn ein paar Probleme:

Ich habe ja in Basic Module, Dialoge und Bibiotheken. Der eigentliche Basic Code (als Prozedur oder Funktion) kommt in die Module oder?

Wenn ich dann so eine Prozedur habe, schaffe ich es aber nicht, ein Textfeld in einem bestimmten Writer-Dokument anzusprechen. Wie weise ich denn eine Prozedur einem Dokument zu und kann darin Objekte ansprechen? Die Codeschnipsel, die hier im Forum gepostet werden, sind mir da nicht eindeutig.

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

Beitrag von Toxitom »

Hey Robert,
ich habe ja in Basic Module, Dialoge und Bibiotheken. Der eigentliche Basic Code (als Prozedur oder Funktion) kommt in die Module oder?
Das ist richtig. Jetzt kannst du aber noch entscheiden, den Code im Dokument oder global zu speichern.
ich bin gerade dabei, von VBA auf Basic umzulernen und habe gleich zu Beginn ein paar Probleme
Das ist normal - da empfehle ich einfach ein wenig Literaturstudium. Das hilft enorm. Im ersten Thread des Basic-Forums sind die wichtigsten, freien Quellen aufgeführt. Ansosten: ein gutes Buch... siehe unten :wink:
ein Textfeld in einem bestimmten Writer-Dokument anzusprechen
Tia, was für ein Textfeld in welchem Dokument? das ist alles zu ungenau... da kann man nicht helfen. Da bräuchte ich schon ein paar mehr Daten.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
theonlyrobi
Beiträge: 5
Registriert: Mo, 28.11.2005 19:53
Kontaktdaten:

Beitrag von theonlyrobi »

Hallo Toxitom,

danke für die Tips. Das "Basic Programmierhandbuch" von Sun ist eine gute Einführung in Basic. Ich habe es nun hinbekommen, ein Makro zu erarbeiten, das in einem Dokument liegt und bei dem Ereignis "Dokument öffnen" ausgeführt wird. Dabei wird ein Dialog aufgerufen mit einem Formular, das mehrere Textfelder enthält. Diese werden bei dann von dem Makro ausgelesen und in die Fußzeile des Dokuments geschrieben. Mein Dokument

Hier der Quelldode:

Code: Alles auswählen

Option Explicit

sub entry_name

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Dim Dlg As Object
dim tb_vname as string
dim tb_nname as string
dim tb_matr as string

DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.entry_name)

Dlg.Execute()

tb_vname = Dlg.getControl("tb_vname").text
tb_nname = Dlg.getControl("tb_nname").text
tb_matr = Dlg.getControl("tb_matr").text

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "PageStyle"
args1(0).Value = "Standard"
args1(1).Name = "On"
args1(1).Value = true

dispatcher.executeDispatch(document, ".uno:InsertPageFooter", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = tb_vname + " " + tb_nname + " (" + tb_matr + ")"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())

'ThisComponent.CurrentController.getViewCursor.textSection.IsProtected=true

Dlg.dispose()

end sub
Doch was ich nicht geschafft habe, ist dass ich die Fußzeile dann auch automatisch per Makro schützen kann. "Per Hand" geht das ja über --> Einfügen --> Bereich. Doch wird das nicht von dem Makro Rekorder aufgezeichnet. Welche Möglichkeit habe ich denn, die Fußzeile zu schützen?

Robert
Antworten