Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Fensterposition auf erweitertem Desktop (https://www.delphipraxis.net/149653-problem-mit-fensterposition-auf-erweitertem-desktop.html)

iphi 26. Mär 2010 08:00


Problem mit Fensterposition auf erweitertem Desktop
 
Hallo,

ich habe eine einfache Anwendung mit 2 Forms. Vom Hauptform wird das zweite Form bei Bedarf mit
Form2.Visible sichtbar gemacht, welches dann mit dem x-Knopf wieder gechlossen werden kann.

Beim Betrieb mit einem einfachen Desktop auf einem Monitor wird die Form2 immer da wieder sichtbar, wo sie beim letzten Öffnen war (klar, Left und Top sind ja immer konstant, so lange man die Form2 nicht verschiebt).

Beim Betrieb auf einem über 2 Motitore erweiterten Desktop geschieht etwas seltsames, wenn Form1 und Form2 auf zwei verschiedene Monitore verteilt werden: Bei Form2.Visible:=true wird Form2.Left und Form2.Top automatisch so geändert, dass Form2 auf demselben Monitor erscheint wie Form1 und nicht da, wo man es zuletzt hingeschoben hat.

Kann man dieses Verhalten ändern?

burn 26. Mär 2010 08:06

Re: Problem mit Fensterposition auf erweitertem Desktop
 
Hallo,

eventuell könntest du dir die Koordinaten beim Schließen der Form2 merken
und später beim wieder Anzeigen der Form2 manuell setzen.
Delphi-Quellcode:
Form2.OnClose
Form2.OnShow
mfG Burn

himitsu 26. Mär 2010 08:30

Re: Problem mit Fensterposition auf erweitertem Desktop
 
Dir wird nix übrigbleiben, als dir die "aktuelle" Position zu merken und nach dem Anzeigen neu zu setzen,
denn weder SetVisible, noch SetWindowToMonitor lassen sich überschreiben/verändern.

Delphi-Quellcode:
procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;

procedure TCustomForm.SetVisible(Value: Boolean);
begin
  if fsCreating in FFormState then
    if Value then
      Include(FFormState, fsVisible) else
      Exclude(FFormState, fsVisible)
  else
  begin
    if Value and (Visible <> Value) then SetWindowToMonitor;
    inherited Visible := Value;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz