Danke für Deinen Vorschlag Volker, aber der hat einen Nachteil. Bei jeder Größenänderung des Fensters springt der Splitter immer in die Mitte des Fensters. Dieses finde ich einen unschönen Effekt. Bei meiner Version bleibt der Splitter an der Stelle, wo ich ihn zuletzt abgesetzt habe.
So wäre es jetzt aus meiner Sicht perfekt :
Delphi-Quellcode:
var
HalfClientWidth : Single;
LeftClientWidth : Single;
procedure TForm1.FormResize(Sender: TObject);
begin
HalfClientWidth := Round(self.ClientWidth / 2);
LeftClientWidth := 300;
Panel2Resize(nil);
end;
procedure TForm1.Panel2Resize(Sender: TObject);
begin
if LeftClientWidth > Panel2.Width then
Panel2.Width := LeftClientWidth
else
if Panel2.Width > HalfClientWidth then
Panel2.Width := HalfClientWidth - Splitter1.Width;
end;
Bei dieser Version bleibt der Splitter immer an der gleichen Position stehen, wenn der Splitter innerhalb des Bereichs ist. Wenn der Splitter beim Verändern der Größe außerhalb des Bereichs ist, dann springt er immer in die Mitte des Fensters.