Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Splitter Bar

Delphi , Компоненты и Классы , TSplitter

Splitter Bar

...я использую TOutline, выровненный с помощью alLeft, и desktop, выровненной по его правой части. Панель расположена после TOutline, и также выровнена с помощью alLeft. Все это дело прилипает к TOutline. Я назвал новую панель 'splitter'. "Отрегулируйте" splitter под себя, сделайте его поУже, создайте красивый контур и нарисуйте двунаправленный курсор. В приведенном ниже примере вы можете заменить TOutLine на нужный вам компонент. Создайте обработчик события мыши и напишите следующий код:


procedure TMainForm.SplitterMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if ssLeft in Shift then 
    outline.Width := outline.Width + X;   {замените OutLine нужным вам объектом}
end;

Here's the translation of the content into Russian:

Splitter Bar!

Ваш код - это хороший старт, но я предложу некоторые улучшения и рекомендации для его более robustness.

Правка расположения До создания splitter bar, убедитесь, что TOutline и компоненты рабочего стола правильно выровнены. Вы можете использовать свойство Align каждого компонента для достижения этого.

TOutline.Align  := alLeft;
Desktop.Align  := alClient; // или alRight, если вы хотите, чтобы splitter bar была на правой стороне

Создание splitter bar Создайте новый TPanel и установите свойство Parent в ваш основной форм (TMainForm). Это сделает его появляться ниже TOutline.

splitter  := TPanel.Create(self);
splitter.Parent  := self;
splitter.Align  := alBottom; // или alTop, если вы хотите, чтобы splitter bar была на верхней стороне

Кастомизация внешнего вида Чтобы создать красивый бордер и курсор, установите свойство BorderStyle панели splitter в bsSingle, а используйте свойство Cursor для установки курсора double arrow.

splitter.BorderStyle  := bsSingle;
splitter.Cursor  := crSizeAll;

Обработка событий В вашем процедуре обработки события adjust width TOutline (или другого компонента, который вы хотите изменить) в зависимости от движения мыши. Вы можете также добавить некоторые проверки границ для предотвращения изменения ширины outline до слишком большого или отрицательного значения.

procedure TMainForm.SplitterMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
     // Adjust width of the outline (or other component)
    Outline.Width  := Max(0, Outline.Width + X);
end;

Вот полный код:

procedure TForm1.FormCreate(Sender: TObject);
var
  splitter: TPanel;
begin
   // Create the splitter panel and align it below the outline
  splitter  := TPanel.Create(self);
  splitter.Parent  := self;
  splitter.Align  := alBottom;

   // Set border style and cursor
  splitter.BorderStyle  := bsSingle;
  splitter.Cursor  := crSizeAll;
end;

procedure TForm1.SplitterMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
     // Adjust width of the outline (or other component)
    Outline.Width  := Max(0, Outline.Width + X);
end;

Это должно дать вам основу для создания splitter bar, который изменяет ширины underlying компонентов. Вы можете дальнейшим образом кастомизировать его внешний вид и поведение по мере необходимости.

В статье описывается создание панели "Splitter Bar" в Delphi, которая позволяет изменять размер компонента TOutline при движении мыши.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: TSplitter ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 23:55:44/0.0065591335296631/2