Hier mal mein Testprojekt:
- Neues VCL-Projekt anlegen.
- Im OI Form1.Height auf 100 und Form1.BorderStyle auf bsSingle setzen.
- Neues Formular hinzufügen (Form2).
- Button auf Form1 mit folgendem OnClick-Handler:
Delphi-Quellcode:
const
DWMWA_EXTENDED_FRAME_BOUNDS = 9;
function DwmGetWindowAttribute(hwnd: HWND; dwAttribute: DWORD; pvAttribute: Pointer; cbAttribute: DWORD): HResult;
stdcall;
external '
dwmapi.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
r: TRect;
begin
//DwmGetWindowAttribute(Handle, DWMWA_EXTENDED_FRAME_BOUNDS, @r, SizeOf(r));
r := BoundsRect;
OffsetRect(r, 20, 0);
Form2 := TForm2.Create(Self);
try
Form2.BoundsRect := r;
Form2.ShowModal;
finally
Form2.Free;
end;
end;
Das liefert folgendes:
Kommentiert man die Zeile
r := BoundsRect;
aus und aktiviert dafür den Dwm-Aufruf, so erhält man:
Wäre nett, wenn das mal jemand unter Delphi XE ausprobieren könnte - vielleicht ist das Problem da ja gar nicht mehr vorhanden.