Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Zwei Dialoge untereinander platzieren

  Alt 13. Feb 2017, 09:58
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.

zwischenablage01.png

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.
  Mit Zitat antworten Zitat