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
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.
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
Hallo Ekkehard,
ja auch ne Möglichkeit - bekommt man der laufenden While-Schleife keine Performance-Probleme?
Gruß Andreas
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
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
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.
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