2013-11-01 11 views
6

이 상황 (그림 참조)을 가지고 있는데 런타임에 Splitter1을 가동하면 Panel2 키가 커지고 Form1 키가 커집니다.Panel1.Constraints.MinHeight가 설정된 경우 TSplitter에서 원하지 않는 양식 크기가 증가합니다.

는 그러나 나는 그것이 높이와 Form1 너무 년대 그래서 Panel2 변경할 수 없습니다, Splitter1가 최대 때문에 Panel1.Constraints.MinHeight의 이동 할 수없는 경우는, 도달 알고,이 타입의 이벤트의 경우를 차단해야합니다.

도움 주셔서 감사합니다.

preview

- 편집-
Panel1.Align = alLeft;
Splitter1.Align : = alBottom;
Panel2.Align : = alBottom;

답변

6

스플리터의 CanResize 이벤트에서 추가 크기 조정을 확인하고 거부 할 수 있습니다.

procedure TForm1.Splitter1CanResize(Sender: TObject; var NewSize: Integer; 
    var Accept: Boolean); 
begin 
    Accept := ClientHeight - (NewSize + Splitter1.Height) >= Panel1.Constraints.MinHeight; 
end; 
+0

감사합니다.이 기능은 저에게 큰 도움이됩니다. 가장 간단한 솔루션이 가장 좋습니다. – NevTon

+0

@ 네브 턴, 오신 것을 환영합니다! –

1

Splitter AutoSnap 속성을 false로 설정하고 MinSize 속성을 Panel1의 MinHeight로 설정합니다.

+0

이 나는'False로 설정 AutoSnap' 있고,'는 rsUpdate로 설정 ResizeStyle'. 지금까지는 언급하지 않아서 유감입니다. – NevTon

+0

그러면 Splitter의 MinSize를 Panel1의 MinHeight로 설정하는 것을 놓친 것 같습니다. 그것 없이는 내 해결책이 작동하지 않습니다. 어쨌든, Sertac은 또 다른 유효한 접근법을 보여주었습니다. –

+0

아니요, 'Splitter1.MinSize' 속성을 놓치지 않았습니다. 이것은 84로 설정되어 있으며, Splitter1을 아래로 움직이면'Panel2'의 최소 크기가됩니다. – NevTon