Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Изменить пароль для Paradox
   Категория: Базы данных
  Замена подстроки в строке
   Категория: Текст и строки
  Округление целого числа до 5
   Категория: Математика
  Числовой формат ячейки в Excel
   Категория: Базы данных
  Функции дат в SQL
   Категория: Базы данных
  Последний день месяца
   Категория: Базы данных
  Получить версию программы VersionInfo
   Категория: Приложение
  Вычислить логарифм
   Категория: Математика
  Компоненты CoolBar и ControlBar
   Категория: Компоненты

Описание компонентов: TSplitter
  << Вернуться к Списку   

  Компонент - TSplitter
Модуль - extctrls
Разделитель панелей, используется для создания в приложении панелей с изменяемыми пользователем размерами
Описание:

Компонент TSplitter вставляется между двумя панелями, выровненными с помощью их свойства Align, и позволяет пользователю сдвигать границу между этими панелями. Последовательность операций по введению TSplitter во время проектирования может быть, например, следующая. Вы размещаете на форме панель TPanel (Panel1) и задаете у нее Align = alLeft. Панель займет левую часть окна. Затем вы размещаете на форме разделитель TSplitter и задайте у него Align = alLeft. Разделитель прижмется к правой стороне панели Panel1, которая уже выровнена в ту же сторону. Разделитель всегда надо выравнивать только после выравнивания соответствующей панели, так как иначе он прижмется просто к краю формы. После этого можно разместить на форме панель Panel2 и задать у нее Align = alClient. Разделитель окажется зажатым между Panel1 и Panel2.


Свойство ResizeStyle компонента TSplitter определяет поведение разделителя при перемещении его пользователем. По умолчанию это свойство равно rsPattern. Это означает, что пока пользователь тянет курсором мыши границу, перемещается только шаблон линии, указывая место намечаемого перемещения границы. Практически такая же картина наблюдается, если установить ResizeStyle = rsLine. При ResizeStyle = rsUpdate в процессе перетаскивания границы пользователем разделитель тоже перемещается и размеры панелей все время меняются. Это сопровождается постоянной перерисовкой панелей и наблюдается неприятное мерцание изображения. Если установить ResizeStyle = rsNone, то в процессе перетаскивания границы не перемещается ни сама граница, ни изображающая ее линия. Вряд ли это удобно пользователю.
Свойство MinSize компонента TSplitter устанавливает минимальный размер в пикселях обеих панелей, между которыми зажат разделитель.


К сожалению, в версиях Delphi, младше Delphi 5, свойство MinSize не всегда срабатывает верно. В Delphi 5 введено новое свойство компонента Splitter - AutoSnap. Если оно установлено в true (по умолчанию), то при перемещении границы возможны те же неприятности, что в младших версиях Delphi. Но если установить AutoSnap в true, то перемещение границы панелей сверх пределов, при которых размер одной из панелей станет меньше MinSize, просто блокируется. Так что можно рекомендовать всегда устанавливать AutoSnap в true. Впрочем, и это не решает всех задач, связанных с перемещением границ панелей, так как ограничение MinSize относится к обеим панелям, граница между которыми перемещается, а в ряде случаев желательно раздельно установить различные минимальные размеры одной и другой панели. Это проще сделать, задав в панелях соответствующие значения свойства Constraints.


Компонент TSplitter имеет событие OnMoved, которое наступает после конца перемещения границы. В обработчике этого события можно предусмотреть, если необходимо, упорядочение размещения компонентов на панелях, размеры которых изменились: переместить какие-то метки, изменить размеры компонентов и т.д.


  << Вернуться к Списку