Hallo,
ACHTUNG! Der Gast oben bin ich, hatte vergessen mich einzuloggen und habe noch ein paar gewaltige Fehler entfernt. Also alles nochmal.
Also im Eifer des Gefechts sind da wohl ein paar Fehler unterlaufen.
1. Leider ist die einfache VisualBasic Syntax den Entwicklern dieses API-Monstrums im StarOffice zu einfach.
geht schon mal gar nicht.
Schau mal unten, wie man ein Textfeld deklariert, einen Text hineinschreibt und wie man ihn ausliest.
Ich weiss es ist traurig, aber wahr.
2. Werden Objekte außerhalb von Sub's dimensioniert bzw. deklariert, dann am besten mit Public oder Global.
Also
Code: Alles auswählen
Public Textfeld as Object '.....Gilt in allen Basic-Modulen des Dokumentes
oder
Code: Alles auswählen
Global Textfeld as Object '.....Gilt im gesamten oOffice
Das Schlüsselwort "Dim" nützt nur innerhalb eines Modules etwas. Da Du aber wahrscheinlich zwischen mehreren Modulen hin und herspringst ist Public die beste Alternative.
Ich gehe mal davon aus, das "Public" reicht. Ausserdem bist Du damit alle Sorgen los, wenn Du doch ein zweites Modul erstellst und willst dann das Textfeld aufrufen, gibt es bei DIM wieder 'ne Fehlermeldung. Also "Public".
Ein Beispielprogramm. Erstelle einen Dialog mit dem Namen (unten der Reiter !) „dlgTextfeld“
Positioniere folgende Steuerelemente und ordne im Eigenschaftsdialog folgende Eigenschaften zu:
Textfeld
Name: txt_Eingabe
Commandbutton
Name:cmd_Schreiben
Titel: Schreiben
Commandbutton
Name: cmd_Lesen
Titel: Lesen
Commandbutoon
Name: cmd_Beenden
Titel: Beenden
Art der Schaltfläche: Abbrechen
Die Unterstriche im Namen sind gewollt und sind unangenehmen Erfahrungen geschuldet. Außerdem dienen sie der Übersichtlichkeit.
Das Programm:
Code: Alles auswählen
Public dlgTest as Object
Public txtEingabe as Object
Sub Init_Dialog
'*****************************************
' Dialog und Steuerelemente initialisieren
'*****************************************
dlgTest=CreateUnoDialog(DialogLibraries.Standard.dlgTextfeld) '..Dialog kreieren
txtEingabe=dlgTest.GetControl("txt_Eingabe")
End Sub
Sub Start
'*******************************************
' Dialog aufrufen
'*******************************************
Dim a as Long
Dim sText as String
Init_Dialog
'...zum Beispiel das textfeld mit einem vordefinierten Wert belegen
sText="Hallo..."
txtEingabe.SetText(sText)
a=dlgTest.execute() '.....Dialog ausführen
if a=0 then
msgbox "Du hast 'Beenden' gedrückt"
end if
dlgTest.Dispose()
End Sub
Sub Schreiben
'*************************************************************
' Sub schreibt über eine Inputbox einen Text in das Textfeld
'*************************************************************
dim sText as String
sText=Inputbox ("Einen Text eingeben, bitt!","Test des Textfeldes")
if sText<>"" then
txtEingabe.Settext(sText)
End if
End Sub
Sub Lesen
'**************************************************************
' Sub liest den Textstring aus dem Textfeld und zeigt den String
' in einer msgbox an
'***************************************************************
Dim sText as String
stext=txtEingabe.GetText()
msgbox sText
End sub
Nun zurück zum Dialogeditor und im Eigenschaftsdialog den Reiter „Ereignisse“ anklicken.
Nun auf den Button „Schreiben“ klicken und im Ereignisdialog den kleinen Button rechts neben „Maustaste losgelassen“ drücken.
Unten links erscheint in der nun geöffneten Dialogbox ein Feld mit wahrscheinlich zwei Einträgen.
Einer ist „OpenOffice.org.Macros“, der zweite Dein Dokument in dem die zwei Module (einmal der Programmtext und dann der Dialog stehen.)
Das „Plus-Zeichen“ vor Deinem Dokument drücken, es erscheint „Standart“. Das „Plus“-Zeichen drücken, es erscheint „Module1“.
„Module1“ anklicken und im Fenster rechts daneben erscheinen die oben geschriebenen Makros.
Dort nach dem Makro „Schreiben“ suchen, anklicken und Button „Zuweisen“ drücken, dann „OK“.
Der Dialog verschwindet.
Nun dasselbe mit dem Button „Lesen“ machen, also auf den Button „Lesen“ clicken im Ereignisdialog bei „Maustaste losgelassen“ den Knopf mit den 3 Pünktchen anklicken und ...... dann Makro „Lesen“ zuweisen.
Das Dokument mal speichern.
Mit der Sub „Start“ wird der ganze Zauber gestartet.
Also im Dokument das Menü „Extras“ aufrufen.
Dann Makro – Makros..
„Start“ wählen und „Ausführen“ drücken.
Ich habe alles, so wie ich geschrieben habe parallel dazu ausgeführt und es klappt.
Nur den Dialog mußt Du so mal gestalten wie oben beschrieben.
Der Dialog und der Programmtext stehen als Makro in EINEM Dokument. wenn nicht, dann mußt Du die Variablen ganz oben als Global definieren! Aber mach es erst mal so.
Viel Glück
Wolf
P.S.
Zum Test könnte ich Dir vielleicht das eben erstellte Makro Schicken!