Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Positionen aller Forms wiederherstellen

  Alt 13. Jan 2010, 09:23
Danke für Eure Antworten / Ideen!

Spricht irgend etwas gegen meine Lösung, außer das das Laden nicht funktioniert?
Mit den 2 zusätzlichen Zeilen je Fensteraufruf könnte ich prima leben:

Delphi-Quellcode:
Function SaveWinPos(Wnd: TForm; Key: String): Boolean;
Var
   WP            : TWindowPlacement;
Begin
   Result:=False;
   WP.Length:=SizeOf(TWindowPlacement);
   GetWindowPlaceMent(Wnd.Handle, @WP);
   With TRegistry.Create(KEY_ALL_ACCESS) Do
   Try
      RootKey:=HKEY_CURRENT_USER;
      Try
         OpenKey(Key, True);
         WriteBinaryData(Wnd.Name, WP, WP.length);
         CloseKey;
         Result:=True;
      Except End;
   Finally
      Free;
   End;
End;

Function LoadWinPos(Wnd: TForm; Key: String): Boolean;
Var
   WP            : TWindowPlacement;
Begin
   Result:=False;
   WP.Length:=SizeOf(TWindowPlacement);
   With TRegistry.Create(KEY_READ) Do
   Try
      RootKey:=HKEY_CURRENT_USER;
      Try
         OpenKeyReadOnly(Key);
         ReadBinaryData(Wnd.Name, WP, WP.length);
         CloseKey;
         SetWindowPlaceMent(Wnd.Handle, @WP);
         Result:=True;
      Except End;
   Finally
      Free;
   End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
   LoadWinPos(Form2, 'Alexander_Test');
   Form2.ShowModal;
   SaveWinPos(Form2, 'Alexander_Test');
end;
Wenn ich es so laufen lasse, dann setzt er zwar die Fensterposition. Allerdings lässt sich das Fenster dann nicht mehr bewegen und das Programm stürzt damit ab. Kann mir jemand die Ursache sagen?

Gruß und Dank, Alexander
Alex Winzer
  Mit Zitat antworten Zitat