Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TScrollBox не прокручивается верт. scroll от мыши 
:(
    Опции темы
alexeybarkalov
  Дата 25.12.2014, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 6.8.2011

Репутация: нет
Всего: нет



Возник такой вопрос - на форме лежит 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;
...

PM MAIL   Вверх
Regulum
Дата 17.2.2015, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.6.2009

Репутация: нет
Всего: 1



в событиях OnMouseWheelDown и OnMouseWheelUp изменять значение VertScrollBar.Position вашего ScrollBox, что-то вроде
Код

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

и 
Код

procedure TForm1.MyScrollBoxMouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin  
   (Sender As TScrollBox).VertScrollBar.Position := (Sender As TScrollBox).VertScrollBar.Position - 5;    
end;

PM MAIL   Вверх
v258
Дата 18.2.2015, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 19.7.2005
Где: Краснодарский кра й

Репутация: 2
Всего: 2



когда-то делал, только для Memo, но можно использовать и для скролбокса, соответственно, Memo1 в коде нужно заменить на MyScrollBox

Код

    procedure WMMouseWheel(var Mes: TWMMouseWheel); message WM_MOUSEWHEEL;
    function IsCursor:boolean;

...........................

{Определение положения курсора - над текстом или нет}
function TForm4.IsCursor: boolean;
var
  R: TRect;
  P: TPoint;
begin
  GetCursorPos(P);
  GetWindowRect(Memo1.Handle,R);
  result := ((p.X >= R.Left) and (p.X <= R.Right))
            and ((p.Y >= r.Top) and (p.Y <= r.Bottom));
end;

{Реакция на прокрутку колесика мыши}
procedure TForm4.WMMouseWheel(var Mes: TWMMouseWheel);
var
  i,j,p: integer;
begin
  if IsCursor then
    {Если курсор находится над текстом, то начать прокрутку}
    begin
      {Определить направление прокрутки}
      if Mes.WheelDelta < 0 then
        p := SB_LINEDOWN else
        p := SB_LINEUP;
      {Определить диапазон прокрутки за один щелчок колесика - системная настройка}
      SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @j, 0);
      {Если получено значение -1, то прокручивать на целую страницу}
      if j < 0 then
        begin
          j := 1;
          p := p + SB_PAGEUP;
        end;
      {Послать заданное количество сообщений на прокрутку}
      for i := 1  to j do
        Memo1.Perform(WM_VSCROLL,p,0);
    end;
end;


количество линий на прокрутку определяется системными настройками мыши
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.