Dialog mit Variablen möglich? (gelöst)
Moderator: Moderatoren
Dialog mit Variablen möglich? (gelöst)
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
herzliche Grüße aus Deutschlands Norden
Re: Dialog mit Variablen möglich?
Hallo
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
In was für einen Text?in den Text eines Dialogs eine Variable einzubauen?
Mal schaun ob ich dich jetzt richtig verstehe.So konnte zB bei einer Sicherheitabfrage der zu loschende Wert angezeigt werden.
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
wehr rächtschraipfähler findet khan si behalden

Re: Dialog mit Variablen möglich?
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?
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
herzliche Grüße aus Deutschlands Norden
Re: Dialog mit Variablen möglich?
Hi Noebian,
so wie Du mit den String aus dem Textfeld auslesen kannst, kannst Du mit
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.
Gruß R
so wie Du mit
Code: Alles auswählen
ostring = oTextField1.Text
Code: Alles auswählen
oTextField1.Text = ostartstring
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
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Dialog mit Variablen möglich?
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.
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
herzliche Grüße aus Deutschlands Norden
Re: Dialog mit Variablen möglich?
Hallo
Der aber bei dir dann gar nicht funktioniert, warum auch immer.
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?
Was hast Du denn nun genau eingestellt bei:
Art der Schaltfläche:
Standardschaltfläche:
Und was hast Du im Reiter "Ereignisse" eingestellt?
Gruß
balu
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 zuwenn einer der Buttons geklickt wird, wie kann ich dann in der neuen Routine die Dialogbox schließen?
Code: Alles auswählen
Sub DialogBeenden
odlg.endexecute
end sub
Warum erwartungsgemäß?oDlg.endexecute erzeugt erwartungsgemäß eine Fehlermeldung
Schon wieder das Wort "Routine". Was soll das heißen, was willst Du uns damit sagen?da das Objekt ja in der neuen Routine nicht bekannt ist
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?
Druck auf "Return"?ich habe einen der Buttons als Standardschaltfläche definiert - dann würde ich erwarten, dass ein Druck auf "Return" das entsprechende Makro aktiviert.
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
wehr rächtschraipfähler findet khan si behalden

Re: Dialog mit Variablen möglich?
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...
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...
Super, deine Frage brachte mich auf die richtige Spur - Eigenschaft von "Standard" auf "OK" geändert, jetzt geht es. Teilproblem gelöst. Danke!Art der Schaltfläche:
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
Re: Dialog mit Variablen möglich?
Hallo Noebian,
das Problem lautet:Gültigkeitsbereich und Lebensdauer von Variablen, siehe auch hier:
http://download.oracle.com/docs/cd/E195 ... index.html
mit, ü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:
und sub2 in anderer Bibliothek:
Du kannst auch den kompletten Dialog übergeben, falls das Beenden in einem anderen Modul stattfinden soll.
Gruß R
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
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
Code: Alles auswählen
zweites_Makro(ostring)
msgbox "Du hast "+ostring+" in Textfeld 1 eingegeben"
end sub
Code: Alles auswählen
zweites_Makro(odlg,ostring)
odlg.endexecute
msgbox "Du hast "+ostring+" in Textfeld 1 eingegeben"
end sub
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Dialog mit Variablen möglich?
Super, danke, damit funzt es!
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden