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
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
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
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
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
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.
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
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
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.
>> 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
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
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.
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?
Ich werd mal meine Frau davon überzeugen heute etwas später zum shoppen
auszufahren :-)
Jürgen
>> 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
Jürgen Schulz:
ah! Wann kommst Du mal zum Berliner Stammtisch?
http://www.doerbandt.de/Access/Stammtisch.htm
Jürgen Schulz:
> www.vostronic.de/downloads/PupUpOverDialog.mdb
einwandfrei, vielen Dank.
Gruss - Mark
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!
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