![]() |
Zwei Dialoge untereinander platzieren
Liste der Anhänge anzeigen (Anzahl: 1)
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. Anhang 46639 Dazu dann der entsprechende Quelltext der OnClick Ereignisses der Schaltfläche.
Delphi-Quellcode:
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.
//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} 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. |
AW: Zwei Dialoge untereinander platzieren
Mach einen Screenshot, öffne Paint und dann male ein Rechteck an die Stelle, wo laut Left/Top/Width/Height deine Form liegen sollte.
Und jetzt sei nicht überrascht, wenn Windows die Rahmen in manchen Windowsversionen größer Malt, als du denkst. :stupid: |
AW: Zwei Dialoge untereinander platzieren
Zitat:
![]() |
AW: Zwei Dialoge untereinander platzieren
Keine Ahnung ob und wie verlässlich das ist aber für meine Anforderung ist das vollkommen ausreichend.
Delphi-Quellcode:
frm2.Top := frm1.Top + GetSystemMetrics(SM_CYSIZEFRAME)+
GetSystemMetrics(SM_CYCAPTION)+ frm1.ClientHeight+ GetSystemMetrics(SM_CYSIZEFRAME); |
AW: Zwei Dialoge untereinander platzieren
Ich mach bei uns auch sowas, also zwei Fenster untereinander.
Meine Lösung, vorallem da unsere Fenster nicht gleich breit sind: Ein bisschen Abstand lassen und dann ist es egal, ob dazwischen 12 oder 16 Pixel liegen. PS: Die Delphi-IDE ist bezüglich der Positionierung selber nicht vorbildlich. ALLE anderen Programme machen keine Probleme, aber nach jedem RDP-Login vergisst Delphi sein Vollbild und schiebt sein Fenster ein bissl nach Rechts-Unten, so daß dann ein Teil des Fensters auf dem rechten Monitor landet und sich das da nichtmal anklicken lässt. Außerdem macht Delphi da noch soooooooo viele Refreschzyklen und scheint Vieles mehrmals neu zu zeichnen, so dass das Fenster dann mehrere Sekunden wild flackert und manchmal 1-2 Minuten auf nichts reagiert oder gar komplett für immer hängen bleibt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz