Hallo,
mir ist gerade etwas ganz merkwürdiges Aufgefallen ich möchte zwei Fenster die Beide als Dialog (bsDialog) eingestellt sind untereinander platzieren jedoch überlappen die Fenster sich um einige Pixel. Als erstes wird der erste Dialog erzeugt auf dem sich eine Schaltfläche befindet und durch drücken dieser wird der zweite Dialog erstellt und soll unterhalb des ersten positioniert werden. Jedoch klappt das nicht so wie erwartet, zu sehen im Screenshot.
Dazu dann der entsprechende Quelltext der OnClick Ereignisses der Schaltfläche.
Delphi-Quellcode:
//Dialog erzeugen
if frm2 = nil then frm2 := Tfrm2.Create(Application);
try
//Dialog Position anpassen
frm2.Left := (frm1.Width - Width) div 2 + frm1.Left;
frm2.Top := frm1.Top + frm1.Height;
//Dialog anzeigen
frm2.ShowModal;
finally
if frm2 <> nil then
begin
frm2.Release;
frm2 := nil;
end;{if}
end;{try..finally}
Ich war immer davon ausgegangen das TForm.Height das Außenmaß für die Höhe sei, aber das scheint in diesem Fall irgendwie nicht zu zutreffen. Ich mein das ist kein großes Problem, ich rechne einfach ein paar Pixel drauf und habe die Dialoge untereinander. Ich würde halt nur gerne wissen warum das so ist. Entwicklungsumgebung ist Delphi 10.1 Berlin Update 2 unter Windows 7 Professional 64 Bit.
Wenn ich zum Testen frm2.Top = frm1.Top setze dann sind beide Dialoge exakt auf gleiche Höhe. Setze ich frm2.Top auf 0 verschiebt sich der Dialog sogar nach oben aus dem Bildschirm. Ergo sind weder TFrom.Top noch TFrom.Height das was sie zu seien scheinen.