Durchbruch!!!!!!!
Also ich hab's jetzt selber rausgefunden.
Ich hatte doch geschrieben, dass es schon was gibt mit dem man das Problem in normalen Applikationen beheben kann. Nachdem ich mir das genauer angesehen hab, hab ich gemerkt, dass da nichts anderes gemacht wird als, dass dem DBGrid vorgegaukelt wird, dass die Cursor-Taste Hoch oder Runter gedrückt wurde.
Mit dieser Info hab ich mir dann eine Klasse geschrieben, die von TDBGrid abgeleitet ist, damit ich die Handler für die OnMouseWheelUp und -Down selber zuweisen kann (geht beim DBGrid nicht einfach so, da normalerweise protected)
Das ganze sieht dann so aus (unten als Download):
Delphi-Quellcode:
unit UTMWDBGrid;
interface
uses
classes,Windows,DBGrids,Messages,Sysutils;
type
TMWDBGrid =
Class(TDBGrid)
private
procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
public
procedure SetMouseWheelHandlers();
end;
implementation
procedure TMWDBGrid.SetMouseWheelHandlers();
begin
Self.OnMouseWheelUp := MouseWheelUp;
Self.OnMouseWheelDown := MouseWheelDown;
end;
// procedure
procedure TMWDBGrid.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
begin
Perform(WM_KeyDown,VK_UP,0);
Abort();
end;
// procedure
procedure TMWDBGrid.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint;
var Handled: Boolean);
begin
Perform(WM_KeyDown,VK_DOWN,0);
Abort();
end;
// procedure
end.
Danach geh ich in der Form aus der
DLL hin, und mache beim OnCreate des Forms bzw. in dessen Konstruktor folgendes:
Delphi-Quellcode:
{uses .....,UTMWDBGrid;}
TMWDBGrid(aDBGrid).SetMouseWheelHandlers();
Und schon geht's so wie man es erwartet.
Evtl. kann das ja mal jemand gebrauchen.
Aber trotzdem Danke Memo!
PS: Wie deklariere ich diese "offene Frage" als beantwortet
[EDIT]
Hab's schon gefunden. *G*
[/EDIT]