Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

Скрулл в DBGrid   Найти похожие ветки 

 
sergeyst ©   (2007-02-09 09:24) [0]

Всем привет! Как в DBGrid сделать перемещение по записям колесиком мышки (т.е. WM_VSCROLL получает грид и говорит квери, к которому прицеплен next или prev)?


 
Ega23 ©   (2007-02-09 09:58) [1]

Просмотри внимательно свой вопрос. Ты уже сам на него ответил.


 
sergeyst ©   (2007-02-09 10:19) [2]


> Ega23 ©   (09.02.07 09:58) [1]

На словах, а как это написать?


 
Ega23 ©   (2007-02-09 10:20) [3]

буквами


 
sergeyst ©   (2007-02-09 10:51) [4]

Ega23 ©   (09.02.07 10:20) [3]
Потомка сделать не получится - как я там укажу Query? Или я ошибаюсь? А если перехватывать это событие в приложении, то как отследить, что мышь на гриде? По координатам? Вроде ясно, а как-нибудь по-другому можно?


 
Плохиш ©   (2007-02-09 11:08) [5]


> sergeyst ©   (09.02.07 10:51) [4]
> Потомка сделать не получится - как я там укажу Query?

А как указываешь его в DBGrid?

А потомка делать придётся и перекрывать в нём методы DoMouseWheelDown и DoMouseWheelUp.


 
Desdechado ©   (2007-02-09 11:09) [6]

цитирую sniknik ©   (30.12.03 14:57) [6]

TMyDBGrid = class(TDBGrid)
  procedure WMMouseWheel(var Msg: TWMMouseWheel); message WM_MOUSEWHEEL;
end;

procedure TMyDBGrid.WMMouseWheel(var Msg: TWMMouseWheel);
begin
if DataSource.DataSet.Active then begin
  if Msg.WheelDelta > 10 then DataSource.DataSet.Prior;
  if Msg.WheelDelta < -10 then DataSource.DataSet.Next;
end;
end;

естественно дальше нужно TMyDBGrid вместо TDBGrid использовать.


 
sniknik ©   (2007-02-09 11:55) [7]

если > "Потомка сделать не получится" (хотя и не понял при чем тут Query ;) то можно просто переопределить метод в стандартном
примерно так
type
 TMyDBGrid = class(TDBGrid);

 TForm1 = class(TForm)
   ....
   procedure MouseWheel(Sender: TObject; Shift: TShiftState;
     WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
   ....
 end;

....
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
 Handled:= true;
 with TDBGrid(Sender) do
   if WheelDelta > 0 then Perform(WM_KEYDOWN, VK_UP, 0)
                     else Perform(WM_KEYDOWN, VK_DOWN, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TMyDBGrid(DBGrid1).OnMouseWheel:= MouseWheel;
end;


Desdechado ©   (09.02.07 11:09) [6]
это кстати не самый хороший код ... :), нет проверки на "подключенность" DataSet-а, или DataSource (если не подключить будет вылетать по ошибке)
просто давалось как попроще "заготовка", разъяснить в принципе. (выше код в такой проверке не нуждается но зато могут быть лишние события от "псевдонажатий" клавиш)


 
sergeyst ©   (2007-02-09 12:06) [8]

Всем спасибо


 
Desdechado ©   (2007-02-09 12:14) [9]

> просто давалось как попроще "заготовка", разъяснить в принципе.
дык, и я тоже :)


 
Германн ©   (2007-02-09 15:41) [10]

Имхо, лучше один раз сделать потомка DBGrid с переопределенными методами DoMouseWheelUp и DoMouseWheelDown, чем каждый раз в новой форме писать метод MouseWheel.
Но проще всего перейти на BDS. :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.053 c
1-1167678957
Rembo
2007-01-01 22:15
2007.02.25
FindComponent и фрейм: как?


2-1170743971
Максименко
2007-02-06 09:39
2007.02.25
DateTimePicker


15-1170235768
RustamK
2007-01-31 12:29
2007.02.25
Bandy 2007


15-1170190420
ArtemESC
2007-01-30 23:53
2007.02.25
На второй год в университете...


1-1168220567
Sleepeer
2007-01-08 04:42
2007.02.25
Перехват процесса выполнения определённых функций из чужой DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский