Мережа магазинів - кей - перегляд теми - splitter в delphi

Ось що я знайшов на цю тему:

Splitter писал (а): Компонент 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, яке настає після кінця переміщення кордону. У обробнику цієї події можна передбачити, якщо необхідно, впорядкування розміщення компонентів на панелях, розміри яких змінилися: перемістити якісь мітки, змінити розміри компонентів і т.д.

Тему до речі закрити можна!

Kurt Cobain forever

Хто зараз на конференції

Зараз переглядають цей форум: yandex

Схожі статті