Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Form als Dialog öffnen

Begonnen von Hondo, Januar 09, 2020, 10:19:40

⏪ vorheriges - nächstes ⏩

Hondo

Hallo,
ich öffne bestimmte Formulare im WindowMode "acDialog", um nach dem schließen dieser Formulare im gleichen Event Code auszuführen.
Leider werden diese dann auch mit dem Dialog-Rahmen geöffnet, also mit Icon und Beschriftung - was mir nicht so gefällt.
Ist es möglich auf die Codeausführung im Aufruf-Event zu warten ohne dass die Formulare als Dialog geöffnet werden?

Gruß Andreas

PhilS

Zitat von: Hondo am Januar 09, 2020, 10:19:40
Ist es möglich auf die Codeausführung im Aufruf-Event zu warten ohne dass die Formulare als Dialog geöffnet werden?
Nein, meiner Meinung nach nicht.
Ich verwende für solche Fälle normale Forms als Dialog und behandle deren Close- oder OK-Button-Click-Events um dann den nachfolgenden Code zu starten.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

Hallo Andreas,
Oder mit einer öffentlichen Property "FormIsOpen" in einem allgem. Modul.
Private m_FormIsOpen As Boolean
Public Property Let FormIsOpen(Status As Boolean)
    m_FormIsOpen = Status
End Property
Public Property Get FormIsOpen() As Boolean
    FormIsOpen = m_FormIsOpen
End Property

Im aufrufenden Form
DoCmd.OpenForm(...)
FormIsOpen = True
Do While FormIsOpen
    DoEvents
Loop

Im "PopUp" beim Schliesen
FormIsOpen = False

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Hondo

Hallo Ekkehard,
ja auch ne Möglichkeit - bekommt man der laufenden While-Schleife keine Performance-Probleme?
Gruß Andreas

Beaker s.a.

Hallo Andreas,
Ich glaube nicht. Es werden ja immer alle Events zuerst zu Ende ausgeführt,
bevor es wieder in die Schleife geht. Die Schleife selber verbraucht ja eigentlich
keine Zeit, wenn ich "DoEvents" richtig verstanden habe.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Hallo Andreas,
Was mir gerade wieder eingefallen ist, weil ich woanders drauf gestossen bin, die
Property ist unnötig, die gibt es schon in Access mit der Eigenschaft "IsLoaded".
Dann braucht es nur die Schleife
Do While CurrentProject.AllForms("DeinForm").IsLoaded = True
    DoEvents
Loop


gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

PhilS

Zitat von: Beaker s.a. am Januar 12, 2020, 13:10:51
Die Schleife selber verbraucht ja eigentlich
keine Zeit, wenn ich "DoEvents" richtig verstanden habe.
Die Schleife verbraucht durchaus Zeit und etwas Rechenleistung. Durch das DoEvents blockiert sie nur nicht.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

Hallo Philipp,
Schon klar, aber deshalb schrieb ich ja eigentlich. Ich meine, solange im
aufgerufenen Form nix passiert, findet ja auch keine "Performance" statt; -
OS und VBA teilen sich ja nur gegenseitig mit, dass eben nix passsiert.
Passiert was, pausiert diese Kommunikation und die Performance ist nur
noch abhängig von dem was da passiert.
Besseres Wissen nehme ich gerne an.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)