calc - Dialog - Textfelder auslesen @balu???
Moderator: Moderatoren
calc - Dialog - Textfelder auslesen @balu???
Hallo zusammen,
habe mich jetzt mal an Dialog getraut, habe nur das Problem, dass ich meine Eingabe nicht in Basic weiterverarbeiten kann.
Hab mit Hilfe des Internets und der Hilfe einiges probiert, aber irgendwie klappt das nicht
Schaut doch bitte mal was ich falsch gemacht habe - Danke
Gruss Dirk
habe mich jetzt mal an Dialog getraut, habe nur das Problem, dass ich meine Eingabe nicht in Basic weiterverarbeiten kann.
Hab mit Hilfe des Internets und der Hilfe einiges probiert, aber irgendwie klappt das nicht
Schaut doch bitte mal was ich falsch gemacht habe - Danke
Gruss Dirk
Re: calc - Dialog - Textfelder auslesen @balu???
Hallo,
bei der OK-Schaltfläche kann ich vielleicht helfen.
Dialoge verwalten->
Schaltfläche->Eigenschaften->Art der Schaltfläche-> OK wählen, dann Standardschaltfläche-> Ja wählen
Gruß Jörg
bei der OK-Schaltfläche kann ich vielleicht helfen.
Dialoge verwalten->
Schaltfläche->Eigenschaften->Art der Schaltfläche-> OK wählen, dann Standardschaltfläche-> Ja wählen
Gruß Jörg
Gruß Jörg
Win 10 Pro AOO 4.1.15
Win 10 Pro AOO 4.1.15
Re: calc - Dialog - Textfelder auslesen @balu???
Hallo Dirk,
Du musst aber im Betreff nich unbedingt mich direkt anschreiben, denn andere wollen doch auch versuchen zu helfen
1.
Du hast die Variable für den Dialog nicht deklariert.
2.
Du hast in der zweiten Sub die Variable für den Dialog neu definiert.
Das war die Kurzform.
Etwas ausführlicher.
Zu 1.
Generell müssen die Variablen rechtzeitig deklariert werden, bevor sie definiert werden. Und die Variable *MyDlg* hast Du wohl richtig definiert, aber eben nicht deklariert, denn das DIM fehlt welches die deklaration ausführt.
Wenn Du einen Dialog erstellst, ist es sehr von Vorteil wenn die Variablen deklaration öffentlich gemacht wird. Das heißt das sie im dementsprechendem Modul als aller erstes gemacht wird, und zwar noch vor der ersten Sub.
Kurzes Beispiel:
Wie gesagt, das nennt man eine öffentliche deklaration. Dadurch steht dann die Variable im gesamten Modul zur Verfügung.
Wird aber die Variable lokal deklariert,
dann gilt diese Variable nur in dieser Sub. Und wenn eine andere Sub im gleichen Modul per Dialog abgearbeitet werden soll, dann ist die Variable dem Makro nicht bekannt und es kommt zu deinem Problem, beispielsweise.
Zu 2.
In der ersten Sub Dlg_Start hattest Du schon MyDlg definiert, und von daher ist das in der zweiten Sub vollkommen überflüssig, wenn Du dich an die Erklärung zu 1. hälst, was Du dringend beachten musst.
Hier der überarbeitete Code.
Nimm deine Datei, gehe in dein Modul *DialogMakros* und lösche ALLES was dort drin steht. Kopiere diesen überarbeiteten Code und füge ihn in das Modul ein. Mehr brauchts nicht. Und schon funktioniert deine Makroabfrage.
Viel Erfolg bei deinen Tests.
Gruß
balu
Du musst aber im Betreff nich unbedingt mich direkt anschreiben, denn andere wollen doch auch versuchen zu helfen
Eigentlich nur zwei kleinigkeiten.Schaut doch bitte mal was ich falsch gemacht habe
1.
Du hast die Variable für den Dialog nicht deklariert.
2.
Du hast in der zweiten Sub die Variable für den Dialog neu definiert.
Das war die Kurzform.
Etwas ausführlicher.
Zu 1.
Generell müssen die Variablen rechtzeitig deklariert werden, bevor sie definiert werden. Und die Variable *MyDlg* hast Du wohl richtig definiert, aber eben nicht deklariert, denn das DIM fehlt welches die deklaration ausführt.
Wenn Du einen Dialog erstellst, ist es sehr von Vorteil wenn die Variablen deklaration öffentlich gemacht wird. Das heißt das sie im dementsprechendem Modul als aller erstes gemacht wird, und zwar noch vor der ersten Sub.
Kurzes Beispiel:
Code: Alles auswählen
Dim MyDlg as Object
Sub Testsub
[...]
End sub
Wird aber die Variable lokal deklariert,
Code: Alles auswählen
Sub Testsub
Dim MyDlg as Object
[...]
End sub
Zu 2.
In der ersten Sub Dlg_Start hattest Du schon MyDlg definiert, und von daher ist das in der zweiten Sub vollkommen überflüssig, wenn Du dich an die Erklärung zu 1. hälst, was Du dringend beachten musst.
Hier der überarbeitete Code.
Code: Alles auswählen
dim MyDlg as object
Sub Dlg_Start
Dialoglibraries.Loadlibrary("Standard")
MyDlg= CreateUnoDialog(Dialoglibraries.Standard.PWAbfrage)
'----------------------------------- Ab hier gibt es jetzt auch Bunte Buttons im Dialog :-) --
Dim bNativeLook as Boolean
bNativeLook = False
MyDlg.getPeer().setProperty( "NativeWidgetLook", bNativeLook )
'-----------------------------------
MyDlg.execute
End Sub
'#######################################
Sub Dlg_PWAbfrage
oEingabe = MyDlg.getControl("txt_PW")
msgbox oEingabe.text
If oEingabe.text = "lolli" then
msgbox "jep"
else
msgbox "so nicht"
End If
End Sub
Viel Erfolg bei deinen Tests.
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: calc - Dialog - Textfelder auslesen @balu???
Hallo Jörg,
vielen Dank, dass war genau das was ich wollte - läuft so perfekt
Vielen Dank für Deine Hilfe
Gruss Dirk
vielen Dank, dass war genau das was ich wollte - läuft so perfekt
Vielen Dank für Deine Hilfe
Gruss Dirk
Re: calc - Dialog - Textfelder auslesen @balu???
Hallo balu,
sorry, wollte Dich nicht .........., nur sicherstellen, dass ich von Dir ein Statement erhalte, denn Deine Erklärungen sind immer super nachvollziehbar und lehrreich.
Ja, glaube mit dieser Dimensionierung....... - da muss ich glaub ich mal "nachsitzen"
aber,
habe Deine überarbeitete Makros nach Löschung meiner "eingearbeitet", mit dem Ergebnis
sobald ich nun auf den Wartungsbutton klicke, kommt die Fehlermeldung
Basic - Laufzeitfehler
Objektvariable nicht belegt
und springt in die erste Zeile des Makros Dlg_PWAbfrage
oEingabe = MyDlg.getControl("txt_PW")
Vermutung meinerseits war/ist
Dimensionierung des Textfeldes...... auch als Object????? und "ausserhalb" der Makros im Modul
Wäre super, wenn Du oder natürlich auch andere hier im Forum nochmal schauen, wo der Fehler steckt
Danke
Gruss Dirk
sorry, wollte Dich nicht .........., nur sicherstellen, dass ich von Dir ein Statement erhalte, denn Deine Erklärungen sind immer super nachvollziehbar und lehrreich.
Ja, glaube mit dieser Dimensionierung....... - da muss ich glaub ich mal "nachsitzen"
aber,
habe Deine überarbeitete Makros nach Löschung meiner "eingearbeitet", mit dem Ergebnis
sobald ich nun auf den Wartungsbutton klicke, kommt die Fehlermeldung
Basic - Laufzeitfehler
Objektvariable nicht belegt
und springt in die erste Zeile des Makros Dlg_PWAbfrage
oEingabe = MyDlg.getControl("txt_PW")
Vermutung meinerseits war/ist
Dimensionierung des Textfeldes...... auch als Object????? und "ausserhalb" der Makros im Modul
Wäre super, wenn Du oder natürlich auch andere hier im Forum nochmal schauen, wo der Fehler steckt
Danke
Gruss Dirk
Re: calc - Dialog - Textfelder auslesen @balu???
Hallo zusammen,
habe einen Fehler gerade selbst beseitigt, hatte der Schaltfläche das falsche Makro zugeordnet.
Jetzt passiert Nichts
habe einen debug eingebaut, aber als wenn das Makro garnicht angesprochen wird
Danke nochmals
Gruss Dirk
habe einen Fehler gerade selbst beseitigt, hatte der Schaltfläche das falsche Makro zugeordnet.
Jetzt passiert Nichts
habe einen debug eingebaut, aber als wenn das Makro garnicht angesprochen wird
Danke nochmals
Gruss Dirk
Re: calc - Dialog - Textfelder auslesen @balu???
Hallo Dirk,
Eine Variablen deklaration ist z.B. das: Dim VariablenNamen as Object
Eine Variablen definition ist z.B. das: oEingabe = MyDlg.getControl("txt_PW")
Eine Dimensionierung ist etwas vollommen anderes, denn dabei geht es um Arrays, und die sind in deiner Datei nicht vorhanden.
Du siehst, manchmal muss man seine Worte sehr sorgfältig überlegen, wenn es um bestimmte Begriffe geht. Aber das wird schon, das wirst Du auch noch verstehen.
Jedoch ist dein Gedankengang wohl nicht ganz so verkehrt, aber selbst für dich noch nicht ganz so einfach zu verstehen.
Da du es früher oder später mit mehr als nur ein, oder zwei Variablen bei Dialogen zu tun hast, ist folgendes Verfahren (was ich ja schon in meinem ersten Beitrag erklärte) einzuhalten, oder empfehlenswert.
Die deklaration der Variablen außerhalb der ersten Sub ganz am Anfang.
Du siehst, ich habe jetzt 2 Variablen öffentlich deklariert. Und ja, ein TextField (Textfeld) in einem Dialog ist auch ein Object, genau so wie alle anderen Grafischen Elemente die man in einem Dialog zeichnen kann.
Da jetzt auch das Textfeld öffentlich deklariert wurde, kann nun auch das Makro dementsprechend geändert werden. Und dabei gehe ich nach folgendem Schema vor.
Alle Variablen die ein Grafisches Element im Dialog darstellen, werden in der ersten Sub, die den Dialog aufruft, definiert.
Da die Variable oEingabe öffentlich deklariert wurde, steht sie auch der anderen Sub zur Verfügung.
Und dadurch würde dann der Code wie folgt aussehen
Ich hänge jetzt zusätzlich zu dem Code auch noch die Datei an.
Danke für dein Lob. Über so etwas freue ich mich auch sehr. Weiß ich doch das meine Arbeit nicht umsonst ist.
Gruß
balu
Mensch Junge, hatte doch nur nen Spaß gemachtsorry, wollte Dich nicht ..........,
Vorsicht! Du musst aufpassen was Du da sagst.Vermutung meinerseits war/ist
Dimensionierung des Textfeldes...... auch als Object????? und "ausserhalb" der Makros im Modul
Eine Variablen deklaration ist z.B. das: Dim VariablenNamen as Object
Eine Variablen definition ist z.B. das: oEingabe = MyDlg.getControl("txt_PW")
Eine Dimensionierung ist etwas vollommen anderes, denn dabei geht es um Arrays, und die sind in deiner Datei nicht vorhanden.
Du siehst, manchmal muss man seine Worte sehr sorgfältig überlegen, wenn es um bestimmte Begriffe geht. Aber das wird schon, das wirst Du auch noch verstehen.
Jedoch ist dein Gedankengang wohl nicht ganz so verkehrt, aber selbst für dich noch nicht ganz so einfach zu verstehen.
Da du es früher oder später mit mehr als nur ein, oder zwei Variablen bei Dialogen zu tun hast, ist folgendes Verfahren (was ich ja schon in meinem ersten Beitrag erklärte) einzuhalten, oder empfehlenswert.
Die deklaration der Variablen außerhalb der ersten Sub ganz am Anfang.
Code: Alles auswählen
Dim MyDlg as object
Dim oEingabe as Object
Sub Dlg_Start
Da jetzt auch das Textfeld öffentlich deklariert wurde, kann nun auch das Makro dementsprechend geändert werden. Und dabei gehe ich nach folgendem Schema vor.
Alle Variablen die ein Grafisches Element im Dialog darstellen, werden in der ersten Sub, die den Dialog aufruft, definiert.
Code: Alles auswählen
Sub Dlg_Start
Dialoglibraries.Loadlibrary("Standard")
MyDlg= CreateUnoDialog(Dialoglibraries.Standard.PWAbfrage)
oEingabe = MyDlg.getControl("txt_PW")
Und dadurch würde dann der Code wie folgt aussehen
Code: Alles auswählen
Dim MyDlg as object
Dim oEingabe as Object
Sub Dlg_Start
Dialoglibraries.Loadlibrary("Standard")
MyDlg= CreateUnoDialog(Dialoglibraries.Standard.PWAbfrage)
oEingabe = MyDlg.getControl("txt_PW")
'----------------------------------- Ab hier gibt es jetzt auch Bunte Buttons im Dialog :-) --
Dim bNativeLook as Boolean
bNativeLook = False
MyDlg.getPeer().setProperty( "NativeWidgetLook", bNativeLook )
'-----------------------------------
MyDlg.execute
End Sub
'#######################################
Sub Dlg_PWAbfrage
msgbox oEingabe.text
If oEingabe.text = "lolli" then
msgbox "jep"
else
msgbox "so nicht"
End If
End Sub
Da kann keiner Helfen, ohne die Datei zu sehen. Vielleicht solltest du die Datei anhängen.Jetzt passiert Nichts
habe einen debug eingebaut, aber als wenn das Makro garnicht angesprochen wird
Danke für dein Lob. Über so etwas freue ich mich auch sehr. Weiß ich doch das meine Arbeit nicht umsonst ist.
Gruß
balu
- Dateianhänge
-
- Netztest-b2.ods
- (13.13 KiB) 152-mal heruntergeladen
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: calc - Dialog - Textfelder auslesen @balu???
Hallo balu,
Deine Arbeit umsonst???? Nein, bestimmt nicht, manchmal vielleicht vergebens
aber ich find die Erläuterungen von Dir wirklich sehr sehr lehrreich und nachvollziehbar, mit dem entscheidenden Hintergrundwissen, und dafür ist ein Danke eigentlich viiieeel zu wenig.
Dimensionierung, Deklaration und Co , gut, das Du wusstest was ich meinte.
Ja, sicherlich werden die Dialoge demnächst umfangreicher, aber fange klein an, denn will auch verstehen was ich tue, und warum es so ist.
Jetzt funktioniert es soweit - vielen vielen Dank.
Werde bestimmt noch ein- zwei- dreimal ......... in Bezug Dialog auf Hilfe angewiesen sein.
Nochmals vielen Dank für Deine Super Hilfe, bis sicherlich demnächst
Gute Nacht und Danke
Gruss Dirk
Deine Arbeit umsonst???? Nein, bestimmt nicht, manchmal vielleicht vergebens
aber ich find die Erläuterungen von Dir wirklich sehr sehr lehrreich und nachvollziehbar, mit dem entscheidenden Hintergrundwissen, und dafür ist ein Danke eigentlich viiieeel zu wenig.
Dimensionierung, Deklaration und Co , gut, das Du wusstest was ich meinte.
Ja, sicherlich werden die Dialoge demnächst umfangreicher, aber fange klein an, denn will auch verstehen was ich tue, und warum es so ist.
Jetzt funktioniert es soweit - vielen vielen Dank.
Werde bestimmt noch ein- zwei- dreimal ......... in Bezug Dialog auf Hilfe angewiesen sein.
Nochmals vielen Dank für Deine Super Hilfe, bis sicherlich demnächst
Gute Nacht und Danke
Gruss Dirk