Карта сайта 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 при движении мыши.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-13 11:27:51/0.0080618858337402/1