Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Hondo am Januar 09, 2020, 10:19:40

Titel: Form als Dialog öffnen
Beitrag von: Hondo am Januar 09, 2020, 10:19:40
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
Titel: Re: Form als Dialog öffnen
Beitrag von: PhilS am Januar 11, 2020, 09:44:43
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.
Titel: Re: Form als Dialog öffnen
Beitrag von: Beaker s.a. am Januar 11, 2020, 13:26:35
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
Titel: Re: Form als Dialog öffnen
Beitrag von: Hondo am Januar 11, 2020, 20:39:51
Hallo Ekkehard,
ja auch ne Möglichkeit - bekommt man der laufenden While-Schleife keine Performance-Probleme?
Gruß Andreas
Titel: Re: Form als Dialog öffnen
Beitrag von: Beaker s.a. am Januar 12, 2020, 13:10:51
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
Titel: Re: Form als Dialog öffnen
Beitrag von: Beaker s.a. am Januar 12, 2020, 14:29:05
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
Titel: Re: Form als Dialog öffnen
Beitrag von: PhilS am Januar 12, 2020, 14:38:57
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.
Titel: Re: Form als Dialog öffnen
Beitrag von: Beaker s.a. am Januar 13, 2020, 14:03:43
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