Scrollrad und DBGrid
-
Hallo zusammen
ist es möglich, dass Mausrad zum Scrollen in einem DBGrid zu benutzen?
Wenn ich das Scrollrad benutze, kann ich zwar im aktiven Bereich scrollen. Gelangt die Zeilenmarkierung aber an den oberen oder unteren Rand, passiert nix mehr...
Was kann man da machen?Vielen Dank für eine Antwort
Christian
-
Hast du damals eine Lösung gefunden??
Wenn ja würde ich diese gerne wissen!!
Danke!
Gruß Ralle
-
Hi,
WM_MOUSEWHEEL
1. neue Komponente... TMyDBGrid (TCustomDBGrid)
/*---------- *.h -----------*/ class PACKAGE TMyDBGrid : public TCustomDBGrid ... protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_MOUSEWHEEL, TMessage, WMMouseWheel) END_MESSAGE_MAP(TCustomDBGrid) void __fastcall WMMouseWheel(TMessage &AMsg); /*---------- *.cpp -----------*/ void __fastcall TMyDBGrid::WMMouseWheel(TMessage &AMsg) { if (DataSource && DataSource->DataSet && !DataSource->DataSet->IsEmpty()) if (AMsg.WParam < 0) DataSource->DataSet->Next(); else DataSource->DataSet->Prior(); }
2. method WindowProc
/*---------- *.h -----------*/ void __fastcall FormCreate(TObject *Sender); void __fastcall FormDestroy(TObject *Sender); private: TWndMethod OldWndProcDBGrid; void __fastcall NewWndProcDBGrid(TMessage &AMsg); /*---------- *.cpp -----------*/ void __fastcall TForm1::FormCreate(TObject *Sender) { OldWndProcDBGrid = DBGrid1->WindowProc; DBGrid1->WindowProc = NewWndProcDBGrid; } void __fastcall TForm1::FormDestroy(TObject *Sender) { DBGrid1->WindowProc = OldWndProcDBGrid; } void __fastcall TForm1::NewWndProcDBGrid(TMessage &AMsg) { switch (AMsg.Msg) { case WM_MOUSEWHEEL : if (DBGrid1->DataSource && DBGrid1->DataSource->DataSet && !DBGrid1->DataSource->DataSet->IsEmpty()) { if (AMsg.WParam < 0) DBGrid1->DataSource->DataSet->Next(); else DBGrid1->DataSource->DataSet->Prior(); } break; default : OldWndProcDBGrid(AMsg); } }
[ Dieser Beitrag wurde am 24.02.2003 um 10:43 Uhr von Blazek Jaroslav editiert. ]
-
Eine Alternative wäre, eine Komponente von TCustomDBGrid abzuleiten und die DoMouseWheelDown-/DoMouseWheelUp-Methoden zu überschreiben, um das DataSet zu steuern.
-
Das gehört in die FAQ oder ??
Danke noch mal!
Gruß Ralle