Главная страница
    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.04 c
15-1170412945
boriskb
2007-02-02 13:42
2007.02.25
Просто бизнес. Ничего личного.


1-1167572092
Nick-123
2006-12-31 16:34
2007.02.25
Проблема с классами


11-1148567746
GigAl
2006-05-25 18:35
2007.02.25
HTML и KOL


2-1170753777
НиколайКо
2007-02-06 12:22
2007.02.25
Как определить версию платформы?


11-1143716182
Боб
2006-03-30 14:56
2007.02.25
Архив конференции KOL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский