gibt es eine Möglichkeit, bei einem TSplitter nur bestimmte Positionen zuzulassen (d.h. ein Hin- und Herspringen zwischen diesen)?
Um bei einem OnClick die Position zu wechseln, verwende ich folgendes:
Code: Alles auswählen
var
pos: Integer;
begin
{ pos = untere Position }
pos := PButtons.Top-PButtons.BorderSpacing.Top-Splitter1.Height-1;
{ wenn der Splitter dort ist, muss die obere Position berechnet und gesetzt werden }
if Splitter1.GetSplitterPosition = pos then begin
pos := pos-PExport.Constraints.MaxHeight;
Splitter1.SetSplitterPosition(pos);
end else
{ wenn er nicht dort ist, soll er dorthin gehen }
Splitter1.SetSplitterPosition(pos);
Code: Alles auswählen
procedure TFrmMain.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
var
tpos, bpos: Integer;
begin
with (Sender as TSplitter) do begin
// Positionen berechnen
bpos := PButtons.Top-PButtons.BorderSpacing.Top-Height-1;
tpos := bpos-PExport.Constraints.MaxHeight;
{ wenn auf dem Weg nach unten }
if NewSize < GetSplitterPosition then
{ dann NewSize direkt auf das Ende setzten }
NewSize := bpos else
{ ansonsten (auf dem Weg nach oben), die obere Position auswählen }
NewSize := tpos;
end;
Accept := true;
end;
Hat sonst noch wer eine Idee?
MfG Socke