2013-11-01 4 views
6

У меня такая ситуация (см. Изображение), теперь, когда я перемещаюсь Splitter1 вверх во время выполнения, Panel2 рост растет, а также увеличивается высота Form1.Нежелательный размер формы, растущий при перемещении TSplitter, когда Panel1.Constraints.MinHeight установлен

Но мне нужно знать, и блокировать этот тип события, когда Splitter1 не может перемещаться вверх из-за Panel1.Constraints.MinHeight достигается, так Panel2 не может быть изменен из его высота и Form1 тоже.

Спасибо за любую помощь.

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

@NevTon, добро пожаловать! –

1

Установите для свойства Splitter Splitter значение false и его свойство MinSize для MinHeight Panel1.

+0

У меня установлено значение AutoSnap False и 'ResizeStyle' установлено значение rsUpdate. Мне жаль, что я не упоминал об этом до сих пор. – NevTon

+0

Затем вы, похоже, пропустили настройку MinSize Splitter на MinHeight Panel1. Без этого мое решение не сработает. Во всяком случае, Сертак показал еще один действительный подход. –

+0

Нет, я не пропустил свойство Splitter1.MinSize. Он установлен в 84, это будет минимальный размер 'Panel2' при перемещении' Splitter1' вниз. – NevTon

 Смежные вопросы

  • Нет связанных вопросов^_^