none
Formularposition auslesen und Position verschieben bei Nicht-Popup-Formularen

    Frage

  • Es gibt verschiedene simple Lösungen, wie man sich die Position eines Popup-Formulars merken und beim Öffnen wiederherstellen lässt. Die basieren auf dem Auslesen der Windows-Position mit der Function GetWindowRect Lib "USER32".

    Das klappt bei Popup-Formularen wunderbar, nur nicht bei Nicht-Popup-Formularen, zum Beispiel einem Hauptformular. Das kann ich auch nicht zu einem Popup machen, denn dann liegt es immer oben.

    Vielmehr werden die Formulare immer irgendwie weiter versetzt neu geöffnet, ich erkenne da kein System.

    Gibt es da eine Lösung für ? Ich kann meine Formulare ja mit move bewegen, ich wüsste nur gerne die Werte, die der Benutzer eingestellt hatte, das sind nicht die Werte, die man bekommt, wenn man die Werte mit GetWindowRect ermittelt.

    Meiner Meinung nach erhält man so zwar die Werte für das Formular auf dem Bildschirm und mit mit GetWindowRect Application.hWndAccessApp, rectParent auch die Werte für das Access-Fenster, aber wenn man die anwendet, wandert das Fenster. Denn der 0,0-Punkt ist beim Auslesen wohl nicht die obere linke Ecke des verfügbaren Bereichs für nicht-popup-Fenster, sondern die linke obere Ecke des Access-Fensters.

    Ich müsste also beim Move-Befehl auch noch wissen, wo der aktuelle Access-Arbeitsbereich anfängt (ist der Navigationsbereich ausgeklappt und ist die Menüband minimiert ? Oder ?

    Thomas

    AC2010-32, Win7-64

    Dienstag, 28. Februar 2012 13:35

Antworten

  • Es gibt verschiedene simple Lösungen, wie man sich die Position eines Popup-Formulars merken und beim Öffnen wiederherstellen lässt. Die basieren auf dem Auslesen der Windows-Position mit der Function GetWindowRect Lib "USER32".

    Das klappt bei Popup-Formularen wunderbar, nur nicht bei Nicht-Popup-Formularen, zum Beispiel einem Hauptformular. Das kann ich auch nicht zu einem Popup machen, denn dann liegt es immer oben.

    Vielmehr werden die Formulare immer irgendwie weiter versetzt neu geöffnet, ich erkenne da kein System.

    Gibt es da eine Lösung für ? Ich kann meine Formulare ja mit move bewegen, ich wüsste nur gerne die Werte, die der Benutzer eingestellt hatte, das sind nicht die Werte, die man bekommt, wenn man die Werte mit GetWindowRect ermittelt.

    Meiner Meinung nach erhält man so zwar die Werte für das Formular auf dem Bildschirm und mit mit GetWindowRect Application.hWndAccessApp, rectParent auch die Werte für das Access-Fenster, aber wenn man die anwendet, wandert das Fenster. Denn der 0,0-Punkt ist beim Auslesen wohl nicht die obere linke Ecke des verfügbaren Bereichs für nicht-popup-Fenster, sondern die linke obere Ecke des Access-Fensters.

    Ich müsste also beim Move-Befehl auch noch wissen, wo der aktuelle Access-Arbeitsbereich anfängt (ist der Navigationsbereich ausgeklappt und ist die Menüband minimiert ? Oder ?

    Thomas

    AC2010-32, Win7-64

    Hallo Thomas,

    schau dir mal Me.WindowLeft, Me.WindowTop, Me.WindowWidth und Me.WindowHeight (von den Formularen) an.


    Viele Grüße Stefan

    Dienstag, 28. Februar 2012 15:41

Alle Antworten

  • Es gibt verschiedene simple Lösungen, wie man sich die Position eines Popup-Formulars merken und beim Öffnen wiederherstellen lässt. Die basieren auf dem Auslesen der Windows-Position mit der Function GetWindowRect Lib "USER32".

    Das klappt bei Popup-Formularen wunderbar, nur nicht bei Nicht-Popup-Formularen, zum Beispiel einem Hauptformular. Das kann ich auch nicht zu einem Popup machen, denn dann liegt es immer oben.

    Vielmehr werden die Formulare immer irgendwie weiter versetzt neu geöffnet, ich erkenne da kein System.

    Gibt es da eine Lösung für ? Ich kann meine Formulare ja mit move bewegen, ich wüsste nur gerne die Werte, die der Benutzer eingestellt hatte, das sind nicht die Werte, die man bekommt, wenn man die Werte mit GetWindowRect ermittelt.

    Meiner Meinung nach erhält man so zwar die Werte für das Formular auf dem Bildschirm und mit mit GetWindowRect Application.hWndAccessApp, rectParent auch die Werte für das Access-Fenster, aber wenn man die anwendet, wandert das Fenster. Denn der 0,0-Punkt ist beim Auslesen wohl nicht die obere linke Ecke des verfügbaren Bereichs für nicht-popup-Fenster, sondern die linke obere Ecke des Access-Fensters.

    Ich müsste also beim Move-Befehl auch noch wissen, wo der aktuelle Access-Arbeitsbereich anfängt (ist der Navigationsbereich ausgeklappt und ist die Menüband minimiert ? Oder ?

    Thomas

    AC2010-32, Win7-64

    Hallo Thomas,

    schau dir mal Me.WindowLeft, Me.WindowTop, Me.WindowWidth und Me.WindowHeight (von den Formularen) an.


    Viele Grüße Stefan

    Dienstag, 28. Februar 2012 15:41
  • Hallo Stefan,

    Das ist genau das gesuchte. Nur leider gibt die Hilfe keinen expliziten Hinweis auf die frm.windowXXX Eigenschaften :-(

    Und unter den frm.Eigenschaften habe ich nur nach width, height usw. gesucht ... und nicht ganz unten auch.

    Danke!

    Thomas


    Sonntag, 4. März 2012 13:33