Oh, ich kann Dein Formular mit XE3 gar nicht öffnen. Da ist offenbar noch einiges geschraubt worden.
Für die erste Frage kannst Du vielleicht TSplitter überschreiben und Grenzwerte für X+Y festlegen.
Die sind natürlich evtl. etwas schwierig zu ermitteln.
Alternativ könntest Du eine Ereignisbehandlung OnIsSplitterInRange ausführen und wenn False zurückgeliefert wird Veränderungen verweigern.
Delphi-Quellcode:
procedure TSplitter.MouseMove(Shift: TShiftState; X, Y: Single);
var
NewSize, Split: Single;
RangeResult: Boolean;
begin
inherited;
if FPressed and Assigned(FControl) then
begin
// X und Y "korrigieren"
// if Assigned(fOnIsSplitterInRange) then
// begin
// fOnIsSplitterInRange(Self, RangeResult);
// if not RangeResult then Exit;
// end; ... irgendwie sowas
CalcSplitSize(X, Y, NewSize, Split);
if DoCanResize(NewSize) then
begin
FNewSize := NewSize;
FSplit := Split;
UpdateControlSize;
end;
end;
end;
Constraints für Deine Panels gibt es noch nicht - oder?
Evtl. deren Breite immer wieder auf einen Maximalwert setzen?
So ganz verstehe ich Deine Fragen aber noch nicht. Kann morgen Abend das mal unter XE3 nachbauen...