Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 13:08   #1
alexey.barkalov
 
Регистрация: 24.08.2011
Сообщений: 6
Вопрос TScrollBox не прокручивается верт. scroll от мыши

Возник такой вопрос - на форме лежит TScrollBox и в него "кладутся" TPanel, а на нее checkbox и label. В результате формируется в ScrollBox вертикальный скролл, но при прокрутки колесика на мыши он не перемещается. Как заставить его перемещаться?
Код:
    pnl := TPanel.Create(MyScrollBox);
    pnl.Parent := MyScrollBox;
    pnl.Align := alTop;
    pnl.Height := 18;
...
    chk := TCheckBox.Create(pnl);
    chk.Parent := pnl;
    chk.Align := alLeft;
    chk.Width := 17;
...
    lb := TLabel.Create(pnl);
    lb.Parent := pnl;
    lb.Align := alClient;
alexey.barkalov вне форума Ответить с цитированием
Старый 25.12.2014, 13:33   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Обрабатывайте событие когда мышь над Вашим ScrollBox`ом и передавайте ему фокус.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 25.12.2014, 13:43   #3
alexey.barkalov
 
Регистрация: 24.08.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Обрабатывайте событие когда мышь над Вашим ScrollBox`ом и передавайте ему фокус.
В смысле, можно примерный код?
alexey.barkalov вне форума Ответить с цитированием
Старый 25.12.2014, 13:47   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Тут были ?
http://www.programmersforum.ru/showthread.php?t=90871
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 25.12.2014, 13:50   #5
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
procedure TForm1.ScrollBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
   ScrollBox1.SetFocus;
end;

procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
    ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + 5;
end;

procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
    ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - 5;
end;
Iron Monk вне форума Ответить с цитированием
Старый 25.12.2014, 13:56   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И так можно
Код:
procedure TForm1.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  ScrollBox1.VertScrollBar.Position:=ScrollBox1.VertScrollBar.Position+WheelDelta;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.12.2014, 14:03   #7
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Тогда так. Уж больно шаг огромен.
Код:
procedure TForm1.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  WheelDelta:=WheelDelta div 20;
  ScrollBox1.VertScrollBar.Position:=ScrollBox1.VertScrollBar.Position+WheelDelta;
end;
Iron Monk вне форума Ответить с цитированием
Старый 26.12.2014, 10:41   #8
alexey.barkalov
 
Регистрация: 24.08.2011
Сообщений: 6
Вопрос

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:
...
procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
    ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - 5;
end;
...
Спасибо за код. Не совсем понятно почему сам ScrollBox криво обрабатывает. Очевидно же если крутим колесиком мыши над ScrollBox он свой VertScroll должен прокручивать сам. Это кривизна VCL?
alexey.barkalov вне форума Ответить с цитированием
Старый 26.12.2014, 11:23   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А еще фокус ввода есть. Так что совсем не очевидно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не прокручивается ScrollBar Praud Общие вопросы Delphi 6 06.08.2013 20:42
не прокручивается страница - subbota HTML и CSS 4 13.05.2010 12:27
Обработка колеса мыши в TScrollBox mutabor Общие вопросы Delphi 6 01.04.2010 10:17
Верт. выравнивание текста в дивах 13th HTML и CSS 21 12.01.2009 23:17
прокрутка в tScrollBox Altera Компоненты Delphi 1 20.10.2008 07:22