Mathias hat geschrieben: Mi 3. Jul 2024, 19:35
Ich habe ein kleines Demo mit einem Spiltter.
Wen ich den Splitter nach links schiebe, geht er bis zum Formrand. Aber rechts bleibt ein Rand welcher mit Splitter.MinSize eingestellt werden kann, welcher aber nicht kleiner als 30 geht.
Nun zur Fragen.
- Wieso geht es nicht kleiner als 30.
- Wie kann man dies auf der linken Seite einstellen ?
Ist mir noch gar nicht aufgefallen...
Auf der linken Seite kannst du Panel1.Constraints.MinWidth := 30 setzen, dann bleibt auch dort dies als Rand stehen.
Im Quellcode von TCustomSplitter findet man:
Code: Alles auswählen
procedure TCustomSplitter.SetMinSize(const AValue: integer);
begin
if (FMinSize=AValue) or (AValue < 1) then Exit;
FMinSize := AValue;
end;
Wenn der neue Wert von MinSize 0 ist, wird der Setter wegen "if ... (AValue < 1)" sofort verlassen, d.h. die Angabe 0 ist wirkungslos. Wenn du aber den neuen Wert schon auf 1 setzt, funktioniert es.
Ich habe mal spaßeshalber das "if ... (AValue < 1)" auskommentiert und einen Hänger erwartet, wenn der Splitter ganz nach rechts geschoben wird. Aber nein - da passiert nichts, das Test-Programm läuft weiter. Keine Ahnung, warum das so im Code steht - wahrscheinlich historisch bedingt... Kannst ja einen Bug-Report schreiben, vielleicht kümmert sich jemand darum.