Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid und Scrollrad (https://www.delphipraxis.net/108132-dbgrid-und-scrollrad.html)

steppo 7. Feb 2008 14:12

Datenbank: SQL • Version: 5.2 SP2 • Zugriff über: AdoQuery,DataSource,DBGrid,DBEdit

DBGrid und Scrollrad
 
Hallo zusammen,

Ich visualisiere Daten in einem DBGrid. Beim befüllen des DBgrid wird ein Datensatz selektiert. Die selektion ist blau hinterlegt und der Pfeil links ist gepunktet.

Bewege ich nun das Scrollrad der Maus, so wird die farbliche Markierung zwar zu einem anderen Datensatz verschoben, jedoch bleibt der zuerst aktivierte Datensatz aktiviert(durch gepunkteten Pfeil ausgewählt).

Wie bringe ich das nun in einklang?

Also entweder das Verschieben der Markierung deaktivieren, oder durch verschieben der Markierung andren Datensatz aktivieren?

Gruß Steppo

burn 7. Feb 2008 16:03

Re: DBGrid und Scrollrad
 
Hallo,

schau dir mal diese Komponente von Torry an.
Müsste eigentlich genau das machen was du willst.

mfg burn

steppo 7. Feb 2008 20:11

Re: DBGrid und Scrollrad
 
Also gibt es für die Standardkomponente keine Möglichkeit!

Danke für die Antwort, werde die von dir vorgeschlagene Komponente mal testen.

Gruß Steppo

Leuselator 7. Feb 2008 21:25

Re: DBGrid und Scrollrad
 
[EDIT]
nimm die Lösung aus dem im nexten Beitrag genannten Thread - ist wesentlich eleganter als eigenes Grid abzuleiten...
[/EDIT]

Grid ableiten:
Delphi-Quellcode:
interface
  TLsDbGrid = class(TDBGrid)
  private
   protected
    procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL;
    procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL;
  published
    property OnMouseWheel;
    property OnMouseWheelDown;
    property OnMouseWheelUp;
  end;

implementation

procedure TLsDbGrid.CMMouseWheel(var Message: TCMMouseWheel);
begin
//  Message.Result:=1;
  inherited;
end;

procedure TLsDbGrid.WMMouseWheel(var Message: TWMMouseWheel);
begin
//  Message.Result:=1;
  inherited;
end;
end.
im ObjectInspector dblClick auf Ereigniss MouseWheelDown bzw. MouseWheelUP und :

Delphi-Quellcode:
procedure TForm1.DbGridMouseWheelDown(    Sender : TObject;
                                          Shift  : TShiftState;
                                          MousePos: TPoint;
                                      var Handled : Boolean);
begin
  if (Sender is TLsDbGrid) then begin
    with TLsDbGrid(Sender).DataSource.DataSet do begin
      if not EOF then Next;
    end;
    Handled := True;
  end;
end;

procedure TForm1.DbGridMouseWheelUp(    Sender : TObject;
                                          Shift  : TShiftState;
                                          MousePos: TPoint;
                                      var Handled : Boolean);
begin
  if (Sender is TLsDbGrid) then begin
    with TLsDbGrid(Sender).DataSource.DataSet do begin
      if not BOF then PRIOR;
    end;
    Handled := True;
  end;
end;

omata 7. Feb 2008 21:41

Re: DBGrid und Scrollrad
 
Zitat:

Zitat von steppo
Also gibt es für die Standardkomponente keine Möglichkeit!

Wer sagt den soetwas? hier

Gruss
Thorsten

steppo 7. Feb 2008 23:27

Re: DBGrid und Scrollrad
 
Recht herzlichen Dank für eure Hilfe.

Gruß Steppo


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz