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

Вниз

в DBGrid не работает мышинный скроллинг   Найти похожие ветки 

 
Lisa   (2004-02-04 13:55) [0]

Проблема такая: скроллировать можно только в пределах видимых строчек, выше или ниже он двигаться не позволяет. Как это можно решить?


 
Вованчик   (2004-02-04 14:09) [1]

Грид из EHLib или переопределять событие от колесика


 
Lisa   (2004-02-04 14:14) [2]

а что это за библиотека?


 
Deniz   (2004-02-04 14:14) [3]

... или поставить дрова от мыши :)


 
Вованчик   (2004-02-04 14:19) [4]

http://www.ehlib.com


 
sniknik   (2004-02-04 14:29) [5]

type
TMyDBGrid = class(TDBGrid);

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

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

procedure TForm1.GrigMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
with TDBGrid(Sender).DataSource.DataSet do
if Active then begin
if WheelDelta > 10 then Prior;
if WheelDelta < -10 then Next;
Handled:= true;
end;
end;

и вся обработка, EHLib не нужен.


 
paul_k   (2004-02-04 16:04) [6]

2 sniknik
Спасибо большое
Действительно просто... в смысле использовать ниписанное
А можно прокомментировать почему и как оно работает?


 
sniknik   (2004-02-04 17:41) [7]

определяем свой класс для доступа к private методам/переменным.
пишем обработку события OnMouseWheel: TMouseWheelEvent; (можно хелп посмотреть)
заменяем указатель события в компоненте на наш.
TComponent (от которого грид наследуется это позволяет) свойство
property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel;
FOnMouseWheel после присвоения уже не nil а указательна нашу процедуру.
а на реальном событии оно вызывается если определено
function TControl.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean;
var
IsNeg: Boolean;
begin
Result := False;
if Assigned(FOnMouseWheel) then
FOnMouseWheel(Self, Shift, WheelDelta, MousePos, Result);
if not Result then
.....


 
paul_k   (2004-02-05 11:49) [8]

Спасибо большое за комментарий...
теперь бы все это в фак положить, а то вопрос регулярный а ковырять архивы форума через полтора месяца не все догадаются.



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

Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-6064
race1
2004-02-21 17:04
2004.03.03
service


3-5952
Labert
2004-02-05 17:01
2004.03.03
Документация по DOA на русском?


1-6085
dr Tr0jan
2004-02-19 05:58
2004.03.03
Отражение процесса копирования файла.


3-5951
Evgen
2004-02-06 06:46
2004.03.03
Codepage 866


14-6204
BALU1111
2004-02-11 12:31
2004.03.03
Продолжение вопроса Intel vs AMD





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