Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PopUp über Dialog

172 views
Skip to first unread message

Jürgen Schulz

unread,
Feb 26, 2009, 3:29:47 AM2/26/09
to
Hallo NG

Ich habe ein Formular(1) das die Eigenschaft Gebunden und PopUp (Dialog)
besitzt.
Nun öffne ich ein weiteres Formular(2) mit der Eigenschaft PopUp.

Nun habe ich folgendes Problem: Wenn ich in das Formular(1) klicke, ist
das Formular(2) nicht mehr sichtbar weil es nun unter dem Formular(1)
liegt.

Wenn ich dem Formular(1) nur die Eigenschaft Gebunden zuweise, dann
funktioniert es wie gewünscht. Aber ich brauche in dem Fall ein PopUp.
Was kann ich machen?

Danke schon mal
Jürgen

Henry Habermacher

unread,
Feb 26, 2009, 4:15:37 AM2/26/09
to
Hallo Jürgen

Und wenn Du das Formular(1) gebunden und popup machst, was ist dann falsch?

Gruss
Henry


--
Die NEK1 verpasst? Kein Problem. Details in FAQ
Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Jürgen Schulz

unread,
Feb 26, 2009, 4:26:49 AM2/26/09
to
Henry Habermacher wrote:
> Hallo Jürgen
>
> Jürgen Schulz wrote:
>> Ich habe ein Formular(1) das die Eigenschaft Gebunden und PopUp
>> (Dialog) besitzt.
>> Nun öffne ich ein weiteres Formular(2) mit der Eigenschaft PopUp.
>>
>> Nun habe ich folgendes Problem: Wenn ich in das Formular(1) klicke,
>> ist das Formular(2) nicht mehr sichtbar weil es nun unter dem
>> Formular(1) liegt.
>>
>> Wenn ich dem Formular(1) nur die Eigenschaft Gebunden zuweise, dann
>> funktioniert es wie gewünscht. Aber ich brauche in dem Fall ein
>> PopUp. Was kann ich machen?
>
> Und wenn Du das Formular(1) gebunden und popup machst, was ist dann
> falsch?

Na das habe ich ja oben schon beschrieben. Wenn ich dann frm2 (popup)
anzeigen lasse, und in Frm1 klicke, ist frm2 nicht mehr über frm1.

Jürgen

Henry Habermacher

unread,
Feb 26, 2009, 4:54:32 AM2/26/09
to
Hallo Jürgen

Wenn Du es gebunden machst, schon. DAs eine schliesst ja das andere nicht
aus.

Jürgen Schulz

unread,
Feb 26, 2009, 5:57:29 AM2/26/09
to
Henry Habermacher wrote:
> Hallo Jürgen
>
> Jürgen Schulz wrote:
>>> Und wenn Du das Formular(1) gebunden und popup machst, was ist dann
>>> falsch?
>>
>> Na das habe ich ja oben schon beschrieben. Wenn ich dann frm2 (popup)
>> anzeigen lasse, und in Frm1 klicke, ist frm2 nicht mehr über frm1.
>
> Wenn Du es gebunden machst, schon. DAs eine schliesst ja das andere
> nicht aus.

Doch...

Wenn ich Frm2 auf gebunden und popup einstelle, kann ich ja nicht
gleichzeitig das Frm1 bearbeiten.
Frm2 soll bei der Eingabe in Frm1 immer im Vordergrund bleiben.
Dies funktioniert nur wenn Frm1 nicht gebunden ist, soll es aber.

Jürgen


Mark Doerbandt

unread,
Feb 26, 2009, 5:59:08 AM2/26/09
to
Hallo, Jürgen,

Jürgen Schulz:

> Wenn ich Frm2 auf gebunden und popup einstelle, kann ich ja nicht
> gleichzeitig das Frm1 bearbeiten.
> Frm2 soll bei der Eingabe in Frm1 immer im Vordergrund bleiben.
> Dies funktioniert nur wenn Frm1 nicht gebunden ist, soll es aber.

es gibt in Access keine Transparenzbereiche in Formularen...

Gruss - Mark

Henry Habermacher

unread,
Feb 26, 2009, 9:54:36 AM2/26/09
to
Hallo Jürgen

Genau diese Aussage hat bisher gefehlt. Du möchtest also, obwohl das
Formular 2 im Vordergrund ist, das Formular 1 bearbeiten. Bisher hattest Du
das nicht so geschrieben. Das geht nicht.

André Minhorst

unread,
Feb 26, 2009, 12:50:57 PM2/26/09
to
Hi,

Am Thu, 26 Feb 2009 21:54:36 +0700 schrieb Henry Habermacher:

> Jürgen Schulz wrote:
>>> Wenn Du es gebunden machst, schon. DAs eine schliesst ja das andere
>>> nicht aus.
>>
>> Doch...
>>
>> Wenn ich Frm2 auf gebunden und popup einstelle, kann ich ja nicht
>> gleichzeitig das Frm1 bearbeiten.
>> Frm2 soll bei der Eingabe in Frm1 immer im Vordergrund bleiben.
>> Dies funktioniert nur wenn Frm1 nicht gebunden ist, soll es aber.
>
> Genau diese Aussage hat bisher gefehlt. Du möchtest also, obwohl das
> Formular 2 im Vordergrund ist, das Formular 1 bearbeiten. Bisher hattest Du
> das nicht so geschrieben. Das geht nicht.

In ein Standardformular:

Const HWND_TOP = 0
Const SWP_NOSIZE = 1
Const SWP_NOMOVE = 2

Private Declare Function SetWindowPos Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Sub SetWindowOnTop(hwnd As Long)
SetWindowPos hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

Ins Formular, das im Vordergrund angezeigt werden soll (zum Beispiel in
Beim Laden, Popup-Eigenschaft sollte auf True stehen):

SetWindowOnTop Me.hwnd

Oder meinst Du was anderes?

Ciao
André

--
http://www.access-entwicklerbuch.de
http://www.access-im-unternehmen.de

Jürgen Schulz

unread,
Feb 27, 2009, 4:43:13 AM2/27/09
to

Ich hab das noch etwas abgeändert, und jetzt geht es genauso wie ich es
wollte.
Danke Andre, Du bist mein Held :-)

Const HWND_TOPMOST = -1
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

Jürgen

André Minhorst

unread,
Feb 27, 2009, 4:53:14 AM2/27/09
to
Hi,

Am Fri, 27 Feb 2009 10:43:13 +0100 schrieb Jürgen Schulz:

> André Minhorst wrote:
> Ich hab das noch etwas abgeändert, und jetzt geht es genauso wie ich es
> wollte.
>

> Const HWND_TOPMOST = -1
> SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

bedenke, das TOPMOST das Formular auch noch im Vordergrund hält, wenn
längst andere Anwendungen den Fokus erhalten haben.

Jürgen Schulz

unread,
Feb 27, 2009, 5:29:58 AM2/27/09
to
André Minhorst wrote:

>> Ich hab das noch etwas abgeändert, und jetzt geht es genauso wie ich
>> es wollte.
>>
>> Const HWND_TOPMOST = -1
>> SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
>
> bedenke, das TOPMOST das Formular auch noch im Vordergrund hält, wenn
> längst andere Anwendungen den Fokus erhalten haben.

Ja, das hab ich auch schon mitbekommen. Wäre ein "kleiner"
Schönhetsfehler.
Ist es eventuell möglich per Timer abzufragen ob Access bzw. die
Application noch den Focus besitz? Dann könnte man ja das Formular
ausblenden.

Jürgen

Jürgen Schulz

unread,
Feb 28, 2009, 5:08:10 AM2/28/09
to

Ich habe den Schönheitfehler auch noch beseitigt.

Mit API das aktive Fenster ermitteln
http://www.schmittis-page.de/index.html?/vb/t120.htm

und dann die entsprechenden Fenster vergleichen.

Jürgen

Mark Doerbandt

unread,
Feb 28, 2009, 5:15:15 AM2/28/09
to
Hallo, Jürgen,

Jürgen Schulz:

> Ich habe den Schönheitfehler auch noch beseitigt.

schön wäre nun noch, wenn Du irgendwo eine kleine Demo Deiner Lösung
zum Download bereitstellen könntest. ;-)

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.

André Minhorst

unread,
Feb 28, 2009, 5:24:57 AM2/28/09
to
Morgen Jürgen,

das heißt, Du prüfst in regelmäßigen Abständen, ob Deine Access-Anwendung
das aktive Fenster ist, und wenn nicht, blendest Du das OnTopMost-Formular
aus oder änderst es auf OnTop?

Jürgen Schulz

unread,
Feb 28, 2009, 5:34:21 AM2/28/09
to
Mark Doerbandt wrote:
> Hallo, Jürgen,
>
> Jürgen Schulz:
>
>> Ich habe den Schönheitfehler auch noch beseitigt.
>
> schön wäre nun noch, wenn Du irgendwo eine kleine Demo Deiner Lösung
> zum Download bereitstellen könntest. ;-)
>
> Gruss - Mark

Ich werd mal meine Frau davon überzeugen heute etwas später zum shoppen
auszufahren :-)

Jürgen

Jürgen Schulz

unread,
Feb 28, 2009, 7:05:33 AM2/28/09
to
Hallo Mark, Andre und alle NGler

>> Ich habe den Schönheitfehler auch noch beseitigt.
>
> schön wäre nun noch, wenn Du irgendwo eine kleine Demo Deiner Lösung
> zum Download bereitstellen könntest. ;-)

Habe mal eine Demo erstellt

www.vostronic.de/downloads/PupUpOverDialog.mdb


Schreibt mal was dazu, kann ja sein das ich irgendwo ein Fehler habe,
oder das es noch beser geht.

Jürgen

Mark Doerbandt

unread,
Feb 28, 2009, 7:28:57 AM2/28/09
to
Hallo, Jürgen,

Jürgen Schulz:

> vostronic.de

ah! Wann kommst Du mal zum Berliner Stammtisch?

http://www.doerbandt.de/Access/Stammtisch.htm

Mark Doerbandt

unread,
Feb 28, 2009, 7:34:12 AM2/28/09
to
Hallo, Jürgen,

Jürgen Schulz:

> www.vostronic.de/downloads/PupUpOverDialog.mdb

einwandfrei, vielen Dank.

Gruss - Mark

André Minhorst

unread,
Feb 28, 2009, 7:28:25 AM2/28/09
to
Hi Jürgen,

nur noch codetechnische Verfeinerungen:

Beim Aufruf des OnTopMost-Fenster das Handle des Popups als OpenArgs
mitgeben:

Private Sub cmdPopUp_Click()
DoCmd.OpenForm "frmPopUpBeispiel2", OpenArgs:=Me.hwnd
End Sub

Dann im Timer einfach:

Private Sub Form_Timer()
Me.Visible = (Me.hwnd = GetForegroundWindow) _
Or (Me.OpenArgs = GetForegroundWindow)
End Sub

Dafür muss die API-Deklaration von GetForegroundWindow noch öffentlich
gemacht werden.

Spart einige Zeilen Code, und außerdem brauchst Du keine globale Variable.
Die übrigens auch nicht weniger schlimm ist, nur weil man sie als Private
deklariert und mit Property Get und -Let darauf zugreift. ;-)

Ein kleiner Schönheitsfehler ist mir noch aufgefallen, für den ich aber
auch keine Lösung aus dem Handgelenk schütteln konnte: Wenn Du eine andere
Anwendung aktivierst, die nur teilweise über dem Access-Fenster mit dem
Popup und dem OnTopMost-Formular liegt, sieht es komisch aus, wenn das
OnTopMost-Formular plötzlich verschwindet. Vielleicht kann man das ja noch
irgendwie in der Z-Reihenfolge zwischen Popup und dem aktuellen Fenster
unterbringen.

Aber sonst: nette Demo!

Jürgen Schulz

unread,
Feb 28, 2009, 1:08:06 PM2/28/09
to
Hi André

André Minhorst wrote:

> nur noch codetechnische Verfeinerungen...

Danke. habe ich gleich mal überarbeitet
http://www.vostronic.de/download/PopUpOverDialog.mdb


> Ein kleiner Schönheitsfehler ist mir noch aufgefallen, für den ich
> aber auch keine Lösung aus dem Handgelenk schütteln konnte: Wenn Du
> eine andere Anwendung aktivierst, die nur teilweise über dem
> Access-Fenster mit dem Popup und dem OnTopMost-Formular liegt, sieht
> es komisch aus, wenn das OnTopMost-Formular plötzlich verschwindet.

Ich arbeite mit zwei Bildschirmen, und da sieht es auch sehr komisch aus
wenn das Formular verschwindet, wenn man am anderen Bildschirm
arbeitet...

Jürgen

0 new messages