![]() |
Feststellen ob mit acDialog geöffnet
Hallo
Wie kann ich in einem Formular (MeinForm) feststellen, ob dieses "normal" oder über "acDialog" geöffnet wurde? 1. DoCmd.OpenForm "MeinForm", , , , , acDialog 2. DoCmd.OpenForm "MeinForm" Mit Me.Modal oder Me.Popup bekomme ich in beiden Fällen FALSE. Ich müsste aber im 1. Fall ein True bekommen und im 2. Fall ein False. Wie geht das? Grüsse und Danke Rolf |
Hi,
wie sieht denn dein vollständiger Code (in welchem Ereignis welchen Formulars) dazu aus ? ich habe das selbst kurz getestet und bekomme korrekte Angaben. |
hm, das docmd.openform mache ich mal aus dem Hauptmenü, dann ohne acDialog.
Der andere Fall ist aus einem geöffneten Fenster über einen Button, dann mit acDialog. Und feststellen möchte ich das im Form_Load von "MeinFormular", also in jenem, welches ich mal mit, mal ohne acDialog öffne. In diesem bekomme ich an dieser Stelle immer ein FALSE. Und in den Eigenschaften des Formular ändere ich nichts: Rahmenart bleibt immer "Veränderbar" |
Wenn das Formular keine geeigneten Eigenschaften zur Direktabfrage der gewünschten Information bietet, gibst Du diese dann eben
- in OpenArgs mit oder - Du gibst dem Formular eine eigene Eigenschaft (das Formular ist immerhin eine Klasse) und verwendest diese. |
Hallo!
Nur als Idee und nicht ausgereift: Code:
Dim frm As Form Josef |
Hallo Josef
Irgendwie komm ich damit nicht weiter. Ich habe das in eine Funktion gelegt, welche ich beim Laden des Form aufrufe und dabei das aufgerufene Form übergebe. Der Focus kann trotz acDialog auf ein anderes offenes Form verlegt werden. Hallo Eberhard OpenArgs wäre eine Idee, da ich die aber schon für anderes verwende müsste ich das mit Trennzeichen und Parsen lösen. Wäre dann vermutlich der letzte Ausweg. Das mit der Eigenschaft leuchtet mir nicht ein. Wenn ich das gleiche Form mal mit/mal ohne acDialog öffne, was könnte denn diese Eigenschaft steuern bzw. wie stellt dann die fest, ob es mit/ohne geöffnet wurde? Gruss Rolf |
Hallo!
Damit das funktioniert, muss das Formular vermutlich vollständig geladen sein. Ich probierte den Code über eine Schaltfläche im Formular aus, das einmal mit und ohne acDialog geöffnet wurde. Musst du schon zum Zeitpunkt des Ladevorgangs wissen, ob mit acDialog geöffnet wurde? mfg Josef |
In der Timer-Funktion geht der Code von Josef.
Vielleicht solltest du umdenken und dein Formular über Objekt-Instanz öffnen. Da kannst du mehr Daten dem Form übergeben und über WithEvents mehrere Information zurück bekommen. G JPA |
Hallo Josef
Ja, ich müsste dass schon beim Laden wissen, bzw. dann nochmals beim Unload. Hintergrund ist, dass ich die Filter Felder schon abfüllen will bzw. beim schliessen den Inhalt der FilterFelder in eine Tabelle schreiben will. Und da das Formular als Dialog etwas andere Filterfelder hat, müsste ich das unterscheiden können. Hallo JPA Das sind leider einige Formulare und sehr, sehr viele Docmd.openform die dann wahrscheinlich angepasst werden müssten. Da scheue ich den Aufwand noch. Gruss Rolf |
Mein zweiter Hinweis entspricht dem, was JPA etwas anders formuliert.
Insgesamt sehe ich es eben nicht als sinnvoll, erst einen Stein ins Wasser zu werfen und ihn dann zu suchen, wenn ich ihn schon in der Hand halte. Zitat:
|
Die Formulare sind Listen, aus denen der Benutzer einen Eintrag wählen kann. Und damit er nicht alle Einträge durch muss, kann im Kopfbereich oben in Felder Filter eingegeben werden, zBsp. bei Hersteller "XY", dann werden in der Liste nur die Einträge vom Hersteller XY angezeigt.
Das sind meine FilterFelder, die ich gerne beim öffnen mit den Werten des letzten öffnens wieder belegt hätte. Dies funktioniert soweit alles, nur eben soll unterschieden werden, ob das Form als Dialog oder normal geöffnet wurde. Dein "Steinwurf" leuchtet ein, nur eben der Aufwand und ich habe keine Ahnung wie das geht :eek: |
Hallo!
Zitat:
Beispiel (Luftcode): Code:
private sub Form_Load() Josef |
Machen wir es mal dreckig :p
Bei acDialog gibt es ja keine MinMax-Buttons, und die frage ich einfach ab: Code:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long G JPA |
@JPA:
Da du auf API ausweichst: Kann man per API vielleicht auch den Modul-Zustand des Fensters abfragen? mfg Josef |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr. |
Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.