Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

In Grid scrollen ohne Markierung zu verlieren

  Alt 27. Aug 2008, 08:16
Datenbank: MySQL • Zugriff über: Corelab MyDAC
Hallo zusammen,

ich verwende für das Scrollen mit der Mousse eine Routine, damit beim Scrollen in einem DBGrid nicht die bereits getätigte Markierung verloren geht. Die sieht folgendermaßen aus:

Delphi-Quellcode:
procedure TfmMain.AppMessage(var Msg: TMsg; var Handled: Boolean);
var DBGrid : TDBGrid;
    CRDBGrid : TCRDBGrid;
begin
  if not fmMain.Showing then Exit;
  {Mouse wheel behaves strangely with dbgrids - this proc sorts this out}
  if Msg.message = WM_MOUSEWHEEL then
  begin
    if (Screen.ActiveControl is TDBGrid) or (Screen.ActiveControl is TCRDBGrid)then
    begin
      if Screen.ActiveControl is TDBGrid then
      begin
         DBGrid := Screen.ActiveControl as TDBGrid;

        if Msg.wParam > 0 then
          Msg.wParam := SendMessage(DBGrid.Handle, WM_VSCROLL, SB_LINEUP, 0)
        else Msg.wParam := SendMessage(DBGrid.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
      end
      else if Screen.ActiveControl is TCRDBGrid then
      begin
         CRDBGrid := Screen.ActiveControl as TCRDBGrid;

        if Msg.wParam > 0 then
          Msg.wParam := SendMessage(CRDBGrid.Handle, WM_VSCROLL, SB_LINEUP, 0)
        else Msg.wParam := SendMessage(CRDBGrid.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
      end;
      Handled := False;
    end;
  end;
end;
Der Part mit dem TDBGrid funktioniert einwandfrei. Somit habe ich die Routine um das TCRDBGrid erweitert. Mit diesem Grid passiert jedoch nichts. Es geht die Markierung verloren und er scrollt einfach durch die Datensätze.

Weiß jemand eine Möglichkeit das Ganze auch an ein TCRDBGrid anwenden zu können?

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat