Ich versuche, die Koordinaten zu steuern, in denen mein Programm ein neues Fenster öffnet, weil sie sich gerade übereinander öffnen. Hat jemand ein funktionierendes Beispiel dafür?
Antworten:
6 für die Antwort № 1Sie können die Eigenschaften .Top und .Left jederzeit manuell festlegen.
procedure TForm1.Button1Click(Sender: TObject);
var
frm : TForm;
begin
frm := TForm.Create(Self);
frm.Left := 100; //replace with some integer variable
frm.Top := 100; //replace with some integer variable
frm.Show;
end;
Windows hat jedoch eine StandardfensterplatzierungAlgorithmus, der versucht, die Titelleisten jedes Fensters sichtbar zu halten. Auf meinem Computer führen wiederholte Klicks auf diese Button1-Prozedur zu schön gestapelten Fenstern:
procedure TForm1.Button1Click(Sender: TObject);
var
frm : TForm;
begin
frm := TForm.Create(Self);
frm.Show;
end;
Vergessen Sie auch nicht, dass Sie die eingebauten TPosition-Positionen verwenden können:
procedure TForm1.Button1Click(Sender: TObject);
var
frm : TForm;
begin
frm := TForm.Create(Self);
frm.Position := poOwnerFormCenter;
{
Other possible values:
TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,
poScreenCenter, poDesktopCenter, poMainFormCenter, poOwnerFormCenter);
//}
frm.Show;
end;
4 für die Antwort № 2
Diese Art von Funktionalität wurde für C # in erläutert eine andere Frage zu SO.
Schauen Sie sich auch für Delphi um Grundlegendes zu und Verwenden von Windows-Rückruffunktionen in Delphi, in dem beschrieben wird, wie Handles für Fenster abgerufen werden, die gerade geöffnet sind. Und sehen Schütteln Sie ein Fenster (Formular) aus Delphi-Code Hier wird beschrieben, wie Sie ein Fenster verschieben, sobald Sie es in den Griff bekommen haben.