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 TOpenDialog positionieren (https://www.delphipraxis.net/54866-topendialog-positionieren.html)

Bunnepeller 12. Okt 2005 20:03


TOpenDialog positionieren
 
Ich möchte die Position eines TOpenDialog´s verändern.
Delphi-Quellcode:
SetWindowPos(GetParent(OpenDialog2.Handle), HWND_TOPMOST,newxpos,newypos,0,0,SWP_NOSIZE);
habe ich schon versucht, aber das Fenster wird mir immer zentriert positioniert.
Alle anderen Sachen, wie HWND_TOPMOST, oder Größe ändern usw. funktionieren.
Kann mir jemand sagen, was ich falsch mache? :?:

jim_raynor 12. Okt 2005 23:21

Re: TOpenDialog positionieren
 
1. Warum eigentlich GetParent? Müsste nicht OpenDialog2.Handle reichen?
2. Wann rufst du diese Funktion auf? Ich vermute mal, dass durch das Execute die Position gesetzt wird. Schonmal versucht in OnShow die Funktion aufzurufen?

Luckie 12. Okt 2005 23:58

Re: TOpenDialog positionieren
 
Nein, der OpenDialog er VCL hat nochj ein unsichtbares Fenster irgendwie.

Zum Problem:
Delphi-Quellcode:

procedure TForm1.MyOpenDialogOnShow(Sender: TObject);
begin
  MoveWindow(GetParent(OpenDialog1.Handle), 0, 0, 250, 150, False);
  SetWindowText(GetParent(OpenDialog1.Handle), 'Test');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.OnShow := MyOpenDialogOnShow;
  if OpenDialog1.Execute then
  begin

  end;
end;
Das verrückte ist, die Größe kann ich verändern, aber die Position nicht. :gruebel:

Sprint 13. Okt 2005 05:49

Re: TOpenDialog positionieren
 
Zitat:

Zitat von Luckie
Das verrückte ist, die Größe kann ich verändern, aber die Position nicht.

Wenn ich mich recht erinnere, wird nach dem Ereignis OnShow die interne Funkiton CenterWindow aus der Unit Dialogs aufgerufen.

Bunnepeller 13. Okt 2005 18:52

Re: TOpenDialog positionieren
 
Ich habe weiter probiert. MoveWindow war auch nicht von Erfolg gekrönt.
Wenn ich den OpenDialog Dialog öffne, diesen anschließend verschiebe,
Fenster schließe und wieder öffne, kommt der Dialog genau an der Stelle,
an der er zuletzt geschlossen wurde.
Durch die Procedure OpenDialogXOnShow komme ich nach wie vor. ??
ich versuch´s mal weiter.

Sprint 14. Okt 2005 05:49

Re: TOpenDialog positionieren
 
Delphi-Quellcode:
procedure TForm1.OpenDialog1Show(Sender: TObject);
begin

  SetWindowPos(GetParent(OpenDialog1.Handle), 0, 10, 10, 0, 0, SWP_NOSIZE);
  Abort;

end;

Bunnepeller 14. Okt 2005 19:45

Re: TOpenDialog positionieren
 
Ja, funktioniert prima.
Vielen Dank! :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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