Morgen Zusammen!
Ich entwickle meine Anwendungen im Büro auf einem Laptop mit angeschlossenem externen Monitor. Wobei der Externe, sofern angeschlossen, als primär Monitor läuft.
Im Moment arbeite ich an einem etwas größeren Programm, welches verschiedene Forms aus
dll´s einbindet und diese als TabSheet auf einer PageControl darstellt. So ne Art Modulsystem. Die Diskussionen über Sinn oder Unsinn dieser Methode sind mir durchaus bekannt.
Starte ich nun meine Anwendungen zuhause, ohne zweiten Monitor, werden die eingebundenen Forms total verschoben dargestellt.
Die Zuweisung erfolgt über
Delphi-Quellcode:
function TLoader.ModulToTab(FPageControl: TPageControl; FModul: TModul): integer;
var
Tab : TMyTabSheet;
WinName: Array [0..255] of char;
begin
Tab:= TMyTabSheet.Create(FPageControl);
Tab.PageControl := FPageControl;
Windows.SetParent(FModul._HWND, Tab.handle);
GetWindowText(FModul._HWND, WinName,255);
Tab.Caption := FModul.Name;// WinName;
Tab.Name := FModul.Name;
Tab.TabVisible := True;
Tab.Modul := FModul;
Windows.ShowWindow(FModul._HWND, SW_SHOWMAXIMIZED);
FPageControl.ActivePage := Tab;
result := FPageControl.TabIndex;
end;
Beim ändern der Hauptform bzw. beim anzeigen des jeweiligen Tabs wird eine Methode in der
dll aufgerufen welche die Größe und die Position anpassen sollte
Delphi-Quellcode:
procedure FormRefresh;
begin
if Modul.Control.ClassNameIs('TPageControl') then
begin
DLLForm.Constraints.MaxWidth := TPageControl(Modul.Control).Width-10;
DLLForm.Constraints.MaxHeight:= TPageControl(Modul.Control).Height-10;
DLLForm.Align := alClient;
end;
end;
Jemand ne Ahnung woran das liegen könnte?
Gruß
Boppe