| Delphi Tips & Tricks | softsale > Delphi Tips & Tricks |
| następna rada > | < poprzednia rada |
Jak zmienić kolor wiersza w dbgrid na zdarzeniu OnMouseMove?
Cżęsto zachodzi potrzeba jakiegoś specjalnego wyświetleniu wiersza w dbgridzie bez konieczności kliknięcia na nim a jedynie w sytuacji kiedy kursor myszki zostanie przesunięty na ten wiersz. Stosujemy tu klasyczny chwyt. Poprzez deklarację type Tmoj_grid = class(TDBGrid); możemy dostepować do własności dbgrida typu protected ( tu row).
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls;
type Tmoj_grid = class(TDBGrid);
........
// to jest procedura obslugi zdarzenia OnMouseMove
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
gc: TGridCoord;
begin
gc:= DBGrid1.MouseCoord(x, y);
if (gc.X > 0) AND (gc.Y > 0) then
begin
DBGrid1.DataSource.DataSet.MoveBy (gc.Y - Tmoj_grid(DBGrid1).Row);
// błąd kompilacji bo własność row jest protected DBGrid1.DataSource.DataSet.MoveBy(gc.Y -DBGrid1.Row);
end;
end;
// a to procedura odrysowania dbgrida
// Jeśli własność row ( integer) jest równa własności ActiveRecord(+1) obiektu DataLink to wybrany wiersz zostanie odrysowany...
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Tmoj_grid(DBGrid1).DataLink.ActiveRecord + 1 = Tmoj_grid(DBGrid1).Row)
or (gdFocused in State) or (gdSelected in State) then
begin
DBGrid1.Canvas.Brush.Color :=$00F9FCDC;
// np zmiana fontu, koloru i rozmiaru czcionki
DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold];
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.Canvas.Font.size:=10;
Dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
W podobny sposób można zmienić np wysokość wiersza w gridzie
Tmoj_grid(DBGrid1).RowHeights[0] := 20;
natomiast DBGrid1.RowHeights[0] := 20; spowoduje błąd kompilacji
Specjalne odrysowanie wiersza w dbgridzie ( od ruchu myszki) ilustruje przykład tip35.zip . |
|
SOFTSALE - Oprogramowanie i Szkolenia softsale@softsale.com.pl 03-565 Warszawa , ul. Borzymowska 43 lok. 301C tel/fax:4084840,0607612428 |