Den Zugriff auf die Controls habe ich beim Oeffnen des Dialogs mit
Code:
Formular= LoadDialog("Modulname", "Formularname")
Control = Formular.GetControl("Controlename")
bekommen.
Wie bekomme ich nun in einer anderen Ereignisoprozedur an das Control des Formulars, ohne globale Variablen. LoadDialog kann ich ja nicht verwenden, da er dann auf einen zweiten unsichtbaren Dialog verweist.
Zugriff auf bestehenden Dialog
Moderator: Moderatoren
Hmmm, viellicht stehe ich ja etwas auf dem Schlauch, aber was genau meinst Du mit "Control" des Formulars.
Meinst Du ein Control (Listbox, Textfeld, CommandButton, usw.) eines Formulars? Gelegentlich sprichst Du aber auch von einem Dialog...
In einem Dialog sprichst Du ein Control mit
an.
Aber vielleicht verstehen andere Deine Frage besser als ich.
Viele Grüße,
Vanished
Meinst Du ein Control (Listbox, Textfeld, CommandButton, usw.) eines Formulars? Gelegentlich sprichst Du aber auch von einem Dialog...
In einem Dialog sprichst Du ein Control mit
Code: Alles auswählen
oMeinDialog.getControl("Meincontrol").Eigenschaft oder.Methode oder .Model
Aber vielleicht verstehen andere Deine Frage besser als ich.
Viele Grüße,
Vanished
Der Titel ist etwas irreführend meiner Frage.
Mein Problem ist an genau folgender Stelle:
Wenn ich in einem Unterprogramm mit
das Formular erzeuge, dann kann ich über die Variable "Dialog" fortan darauf zugreifen.
Ich möchte nun in einem anderen Unterprogramm auf ein bestehendes Formular wieder darauf zugreifen, ohne die Variable "Dialog" global verfügbar machen zu müssen.
Ich suche demnach eine Möglichkeit, wie ich dieses Handle auf einen _bestehenden_ Dialog bekomme.
Mein Problem ist an genau folgender Stelle:
Wenn ich in einem Unterprogramm mit
Code: Alles auswählen
Dialog= LoadDialog("Modulname", "Formularname")
Ich möchte nun in einem anderen Unterprogramm auf ein bestehendes Formular wieder darauf zugreifen, ohne die Variable "Dialog" global verfügbar machen zu müssen.
Ich suche demnach eine Möglichkeit, wie ich dieses Handle auf einen _bestehenden_ Dialog bekomme.
Hmmm, ich verstehe es immer noch nicht so ganz.
Du hast ein Sub mit dem Du den Dialog erzeugst. In diesem Sub kannst Du also mit dem Dialog arbeiten. Wenn ich Dich richtig verstehe (und mit dem Hintergrund Deiner Frage aus einem anderen Thread) beendest Du diesen Dialog in dem Sub wieder. Richtig? Und jetzt möchtest Du ihn in einem anderen Sub wieder öffnen? Wenn dem so sein sollte brauchst Du nur das Sub mit dem Dialog erneut aufrufen. Ein Sub wird einfach über seinen Namen aufgerufen ohne sub, ohne goto ohne alles eben, nur der Name.
Das sähe dann ungefähr so aus
Allerdings werden dann die übrigen Zeilen dieses Subs wieder mit ausgeführt. Wenn Du das nicht möchtest, mußt Du die Erstellung des Dialoges in ein eigenes Sub verlagern.
Vielleicht ist es das, was Du wissen möchtest, vielleicht aber auch nicht
Viele Grüße,
Vanished
Du hast ein Sub mit dem Du den Dialog erzeugst. In diesem Sub kannst Du also mit dem Dialog arbeiten. Wenn ich Dich richtig verstehe (und mit dem Hintergrund Deiner Frage aus einem anderen Thread) beendest Du diesen Dialog in dem Sub wieder. Richtig? Und jetzt möchtest Du ihn in einem anderen Sub wieder öffnen? Wenn dem so sein sollte brauchst Du nur das Sub mit dem Dialog erneut aufrufen. Ein Sub wird einfach über seinen Namen aufgerufen ohne sub, ohne goto ohne alles eben, nur der Name.
Das sähe dann ungefähr so aus
Code: Alles auswählen
Sub Dein_erstes_Sub
oDialog1 = LoadDialog("Standard", "Dialog1")
oDialog1.Execute() 'Dialog wird geöffnet
oDialog1.Dispose()
'Hier stehen irgendwelche Befehle usw.
oDialog1.endexecute() 'Dialog wird geschlossen
End Sub
Sub Dein_zweites_Sub
'Aufrufen des Dialoges mit:
Dein_erstes_Sub
'Wieder irgendwelche Befehle
End Sub
Vielleicht ist es das, was Du wissen möchtest, vielleicht aber auch nicht

Viele Grüße,
Vanished
Hey powerede,
das war es dann auch schon. Was spricht denn dagegen. Die Varaibel ist jetzt im Modul verfügbar, d.h., sobald die Dialogbox geöffnet ist, kannst du darauf zugreifen.
Hast du mehrere Dialogboxen, die aber nie gleichzeitig geöffnet sind, kannst du auch nur diese eine Varaible verwenden.
Gruss
Thomas
Warum nicht? Das geht nicht anders. Definiere am Anfang des Moduls vor der ersten Sub den Dialogch möchte nun in einem anderen Unterprogramm auf ein bestehendes Formular wieder darauf zugreifen, ohne die Variable "Dialog" global verfügbar machen zu müssen.
Code: Alles auswählen
Dim dialog as Object
Hast du mehrere Dialogboxen, die aber nie gleichzeitig geöffnet sind, kannst du auch nur diese eine Varaible verwenden.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Es geht mir wirklich nur darum, auf einen bestehenden offenen nicht beendeten Dialog ohne globale Variablen Zugriff zu bekommen.
Aber wie durch meinen Vorgänger beschrieben, ist das leider nicht möglich.
Dein Vorgänger hat beschrieben das globale Variablen nicht nötig sind. Denn ich wüßte nicht warum eine modulweit gültige Variable plötzlich eine globale Variable sein sollte.
Selbst wenn globale Variablen nötig wären, was wäre konkret das Problem?Das könnte dann ein Problem werden, da ich sehr viele Dialoge habe.
Gruß
Stephan