Zugriff auf bestehenden Dialog

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

Moderator: Moderatoren

powerede
*
Beiträge: 11
Registriert: Do, 30.12.2004 11:12

Zugriff auf bestehenden Dialog

Beitrag von powerede »

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.
Vanished
**
Beiträge: 35
Registriert: Do, 23.12.2004 12:38

Beitrag von Vanished »

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

Code: Alles auswählen

oMeinDialog.getControl("Meincontrol").Eigenschaft oder.Methode oder .Model
an.

Aber vielleicht verstehen andere Deine Frage besser als ich.

Viele Grüße,
Vanished
powerede
*
Beiträge: 11
Registriert: Do, 30.12.2004 11:12

Beitrag von powerede »

Der Titel ist etwas irreführend meiner Frage.

Mein Problem ist an genau folgender Stelle:

Wenn ich in einem Unterprogramm mit

Code: Alles auswählen

Dialog= LoadDialog("Modulname", "Formularname") 
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.
Vanished
**
Beiträge: 35
Registriert: Do, 23.12.2004 12:38

Beitrag von Vanished »

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

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
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 :roll:

Viele Grüße,
Vanished
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey powerede,
ch 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.
Warum nicht? Das geht nicht anders. Definiere am Anfang des Moduls vor der ersten Sub den Dialog

Code: Alles auswählen

Dim dialog as Object
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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

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.
Das könnte dann ein Problem werden, da ich sehr viele Dialoge habe.
Selbst wenn globale Variablen nötig wären, was wäre konkret das Problem?

Gruß
Stephan
Antworten