Dialog mit Variablen möglich? (gelöst)

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

Moderator: Moderatoren

Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Dialog mit Variablen möglich? (gelöst)

Beitrag von Noebian »

Hi, gibt es einen Weg, in den Text eines Dialogs eine Variable einzubauen? So konnte zB bei einer Sicherheitabfrage der zu loschende Wert angezeigt werden. Mit dem Dialogeditor scheint es nicht zu gehen, oder?
Zuletzt geändert von Noebian am Fr, 21.10.2011 09:21, insgesamt 1-mal geändert.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dialog mit Variablen möglich?

Beitrag von balu »

Hallo
in den Text eines Dialogs eine Variable einzubauen?
In was für einen Text?
So konnte zB bei einer Sicherheitabfrage der zu loschende Wert angezeigt werden.
Mal schaun ob ich dich jetzt richtig verstehe.
Du rufst einen Dialog auf, und möchtest dort in einem TextField, Label oder ... etwas anzeigen lassen. Dieses TextField, oder was auch immer, soll aber nicht mit einem festen sondern mit einem variablen Text beim Dialog aufruf bestückt werden. Stimmt das?

Wenn ja! So ist das machbar.
Und in welchem Modul von OOo soll das ganze geschehen, Calc, Writer ...? Bei Calc könnte ich eventuell helfen, bei den anderen musst Du auf andere Helfer warten.

Welche OOo Version?
Welches Betriebssystem?
Genauere Infos, bitte schön.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: Dialog mit Variablen möglich?

Beitrag von Noebian »

moin balu,
ja, du hast mich verstanden. Es ist manchmal gar nicht so leicht, die Dinge in Worte zu fassen, vor allem, wenn man die Materie noch nicht so ganz durchdrungen hat. Betriebssystem ist Vista, bzw Win 7 (zwei verschiedene Rechner). OO ist 3.3.0 bzw LibreOffice 3.4.3
Der Dialog soll in Base zum Einsatz kommen - aber macht das einen Unterschied? das Basic ist doch für alle Module gleich, oder nicht?
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Dialog mit Variablen möglich?

Beitrag von F3K Total »

Hi Noebian,
so wie Du mit

Code: Alles auswählen

ostring = oTextField1.Text
den String aus dem Textfeld auslesen kannst, kannst Du mit

Code: Alles auswählen

oTextField1.Text = ostartstring
den Text des Textfeldes einlesen. Siehe unten.
Hier ist also ostartstring Deine Variable.
Mit "osel" wird der eingegebene Text selektiert, damit man, wenn man noch ändern möchte, gleich lostippen kann.

Code: Alles auswählen

dim oDlg as object
dim oTextField1 as object

Sub Start_Dialog
    
dim osel as new com.sun.star.awt.Selection
ostartstring="Starttext"
ostringlenght=len(ostartstring)
osel.min=0
osel.max=ostringlenght
    
DialogLibraries.loadLibrary( "Standard" )
oForm = DialogLibraries.Standard.getbyname("Select_Table")
oDlg = CreateUnoDialog( oForm )
oTextField1 = oDlg.GetControl("TextField1")
oTextfield1.setFocus
oTextField1.Text=ostartstring
oTextField1.Selection=osel
odlg.execute'ausführen

End Sub

Sub Stop_Dialog
oTextField1 = oDlg.GetControl("TextField1")
ostring=oTextField1.Text
odlg.endexecute
msgbox "Du hast "+ostring+" in Textfeld 1 eingegeben"
end sub
Gruß R
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: Dialog mit Variablen möglich?

Beitrag von Noebian »

genial R, so langsam komme ich dahin wo ich hinwill!
zwei Probleme habe ich noch:
1.) Ich habe zwei Buttons definiert und zwei Makros dafür hinterlegt.
wenn einer der Buttons geklickt wird, wie kann ich dann in der neuen Routine die Dialogbox schließen?
oDlg.endexecute erzeugt erwartungsgemäß eine Fehlermeldung, da das Objekt ja in der neuen Routine nicht bekannt ist. Wie kann ich es aufrufen?

2.) ich habe einen der Buttons als Standardschaltfläche definiert - dann würde ich erwarten, dass ein Druck auf "Return" das entsprechende Makro aktiviert. Tut es aber nicht. Es passiert gar nichts.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Dialog mit Variablen möglich?

Beitrag von balu »

Hallo
wenn einer der Buttons geklickt wird, wie kann ich dann in der neuen Routine die Dialogbox schließen?
Woher sollen wir denn das wissen? Da Du weder deinen Code hier veröffentlichst, noch eine Beispieldatei anhängst. Und eins von beiden solltest Du schon machen. Denn ich könnte ja jetzt ganz einfach sagen, ordne einem Button bei "Aktion ausführen" folgenden Code zu

Code: Alles auswählen

Sub DialogBeenden
odlg.endexecute
end sub
Der aber bei dir dann gar nicht funktioniert, warum auch immer.

oDlg.endexecute erzeugt erwartungsgemäß eine Fehlermeldung
Warum erwartungsgemäß?

da das Objekt ja in der neuen Routine nicht bekannt ist
Schon wieder das Wort "Routine". Was soll das heißen, was willst Du uns damit sagen?
Ein Datei kann mehrere Bibliotheken haben. Und jede Bibliothek kann mehrere Module beinhalten. Wenn Du einen Basic-Code schreibst, dann geschieht das in einem Modul, was ja unten auf den Reitern nachzulesen ist. Und jedes Modul kann wiederum aus mehreren Subs bestehen.
Also was meinst Du mit Routine?

ich habe einen der Buttons als Standardschaltfläche definiert - dann würde ich erwarten, dass ein Druck auf "Return" das entsprechende Makro aktiviert.
Druck auf "Return"?
Was hast Du denn nun genau eingestellt bei:
Art der Schaltfläche:
Standardschaltfläche:

Und was hast Du im Reiter "Ereignisse" eingestellt?


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: Dialog mit Variablen möglich?

Beitrag von Noebian »

Hi, mit Routine meine ich eine Sub.
Die Struktur sieht so aus: Sub 1 ruft den Dialog auf. Schaltfläche 1 des Dialogs ruft Sub 2 auf, Schaltfläche 2 ruft Sub 3 auf.
"odlg.endexecute" in einer anderen Sub als derjenigen, die den Dialog aufgerufen hat, erzeugt den Fehler "Objektvariable nicht belegt". Was mir auch einleuchtet, da meines Wissens Objekte nur zur Laufzeit einer Sub existieren.
Daher meine Frage: mit welchem Befehl kann ich das Dialog-Objekt in einer anderen Sub wieder zu fassen bekommen?
"CreateUnoDialog( oForm )" wird es doch wohl nicht sein, oder? Der Dialog ist ja schon created...
Art der Schaltfläche:
Super, deine Frage brachte mich auf die richtige Spur - Eigenschaft von "Standard" auf "OK" geändert, jetzt geht es. Teilproblem gelöst. Danke!
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Dialog mit Variablen möglich?

Beitrag von F3K Total »

Hallo Noebian,
das Problem lautet:Gültigkeitsbereich und Lebensdauer von Variablen, siehe auch hier:
http://download.oracle.com/docs/cd/E195 ... index.html

mit

Code: Alles auswählen

dim odlg as object
, über dem Sub1, wird die Variable odlg als öffentliche Variable deklariert, und steht allen Modulenin der Bibliothek zur Verfügung. Wenn Du also Sub2 und Sub3 in der gleichen Bibliothek hast, geht es.
Eine weitere Möglichkeit, wenn Sub2 in einer anderen Bibliothek, z.B unter "meine Makros" statt im Dokument, steht ist es, den Dialog in der aktuellen Bibliothek zu beenden und Variablen beim Aufruf von z.B Sub2 zu übergeben ala:

Code: Alles auswählen

Sub Stop_Dialog
oTextField1 = oDlg.GetControl("TextField1")
ostring=oTextField1.Text
odlg.endexecute
zweites_Makro(ostring)
end sub
und sub2 in anderer Bibliothek:

Code: Alles auswählen

zweites_Makro(ostring)
msgbox "Du hast "+ostring+" in Textfeld 1 eingegeben"
end sub
Du kannst auch den kompletten Dialog übergeben, falls das Beenden in einem anderen Modul stattfinden soll.

Code: Alles auswählen

zweites_Makro(odlg,ostring)
odlg.endexecute
msgbox "Du hast "+ostring+" in Textfeld 1 eingegeben"
end sub


Gruß R
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: Dialog mit Variablen möglich?

Beitrag von Noebian »

Super, danke, damit funzt es!
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Antworten