AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDBGrid in DLL-Formular und Mousewheel

Ein Thema von Wite · begonnen am 21. Aug 2003 · letzter Beitrag vom 8. Jul 2004
Antwort Antwort
Wite

Registriert seit: 31. Jul 2003
10 Beiträge
 
#1

Re: TDBGrid in DLL-Formular und Mousewheel

  Alt 21. Aug 2003, 15:33
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]
Angehängte Dateien
Dateityp: pas utmwdbgrid.pas (1,9 KB, 18x aufgerufen)
o_O
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz