Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.12.2016, 10:46
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию Прокрутка мышью в DBСtrlGrid

Подскажите как задействовать прокрутку мышью в DBСtrlGrid. Нужно чтобы один шаг ровнялся прокрутке на одну запись. Поискал по всему интернету но готового решения не нашел. Часто упоминается про OnMouseWheel но у этого компонента нет своего такого события. Может кто то уже успешно занимался этим вопросом?
Ответить с цитированием
  #2  
Старый 14.12.2016, 11:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Нужно переопределить DoMouseWheel(). Либо в наследнике, либо через хак.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 14.12.2016, 13:08
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Нужно переопределить DoMouseWheel(). Либо в наследнике, либо через хак.


А примера нет случайно? Я мышей не ловил раньше при помощи delphi)). Буду благодарен если научите
Ответить с цитированием
  #4  
Старый 14.12.2016, 13:46
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от delphi-explorer
А примера нет случайно? Я мышей не ловил раньше при помощи delphi)). Буду благодарен если научите
Я с телефона в интернете, поэтому сейчас никак, вечером если только.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 14.12.2016, 13:51
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Я с телефона в интернете, поэтому сейчас никак, вечером если только.


Я покопаюсь еще в дебрях форума. Если не затруднит, напишите при возможности пример.
Ответить с цитированием
  #6  
Старый 14.12.2016, 15:45
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Не совсем то, что требуется, переход не точно по записям, но вот пример прокрутки с подкладкой глобальной процедуры колёсика
Код:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
 if WindowFromPoint(MousePos) = DBCtrlGrid1.Handle then
  if WheelDelta > 0 then
   DBCtrlGrid1.Perform(WM_VScroll, SB_LINEUP, 0)
    else
     DBCtrlGrid1.Perform(WM_VScroll, SB_LINEDOWN, 0);
end;
Ответить с цитированием
  #7  
Старый 14.12.2016, 18:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, dbcgrids, DB, DBTables;

type
  TDBCtrlGrid = class(DBCGrids.TDBCtrlGrid)
  protected
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
  end;

  TForm1 = class(TForm)
    DBCtrlGrid1: TDBCtrlGrid;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Table1: TTable;
    DataSource1: TDataSource;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TDBCtrlGrid }

function TDBCtrlGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
  MousePos: TPoint): Boolean;
begin
  if WheelDelta>0 then DataSource.DataSet.Prior else DataSource.DataSet.Next;
  Result:=True;
end;

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
delphi-explorer (14.12.2016)
  #8  
Старый 14.12.2016, 20:15
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Спасибо!! Я понял как это должно работать. Только почему то выдается ошибка: [DCC Error] Form1.pas(157): E2065 Unsatisfied forward or external declaration: 'TForm1.DoMouseWheel' на строке:

Код:
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;

В виду своей неопытности в объявлении классов не могу разобраться что лишнее убрать из деклараций в форме.

Последний раз редактировалось delphi-explorer, 14.12.2016 в 21:12.
Ответить с цитированием
  #9  
Старый 14.12.2016, 20:21
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Да нет, пример NumLock`а работает без ошибок, вот проверка под ADO
Вложения
Тип файла: zip delphi-explorer.zip (23.0 Кбайт, 5 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
delphi-explorer (14.12.2016)
  #10  
Старый 14.12.2016, 20:24
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Да нет, пример NumLock`а работает без ошибок, вот проверка под ADO
Да, он работает. Я тоже его запускал на новом проекте. Это у меня что то с текущим проектом. Сейчас найду что лишнее и тоже заработает.
Ответить с цитированием
  #11  
Старый 14.12.2016, 20:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от delphi-explorer
'TForm1.DoMouseWheel'.
Вот тут внимательней.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 14.12.2016, 20:41
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Вот тут внимательней.

Да).Form1 туда случайно попало. Там
E2065 Unsatisfied forward or external declaration: 'TDBCtrlGrid.DoMouseWheel'

Последний раз редактировалось delphi-explorer, 14.12.2016 в 20:44.
Ответить с цитированием
  #13  
Старый 14.12.2016, 22:12
delphi-explorer delphi-explorer вне форума
Прохожий
 
Регистрация: 14.12.2016
Сообщения: 9
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию

Все, разобрался! Объявил функцию в классе как в примере NumLock, а реализацию не добавил и пытался компилировать. Большое спасибо NumLock и Alegun за помощь!
Вот думаю почему сразу разработчик не добавил DbCtrlGrid такую полезную возможность как скрол?
Ответить с цитированием
  #14  
Старый 15.12.2016, 09:35
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Если есть желание, можешь глянуть в сторону EhLib.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #15  
Старый 15.12.2016, 10:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Сейчас на работе с EhGrid на cxGrid проекты переписываем, чтобы забыть EhLib как страшный сон
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter