Vamos precisar do seguinte :
1 - DBGrid
1 - ClientDataSet
1 - DataSorce
Veja a imagem abaixo, o que importa não é a conexão e sim seu DBGrid com registro para podermos ver o exemplo funcionando.
Vamos criar uma classe no nosso formulário que herda de TDBGrid, para podermos acessar propriedades privadas da class TDBGrid, veja como criar.
type
THackDBGrid = class(TDBGrid);
TForm1 = class(TForm)
Com o layout montado vamos agora precisar de uma property para poder armazenar e mudar a posição do mouse. No private do próprio formulário faça o seguinte :
private
property MouseOverRow: integer;
Ao fazer isso, você irá apertar CTRL + SHIFT + C , para poder implementar o código completo, sem você ter trabalho. Em seguida seu código irá ficar assim :
private
FMouseOverRow: integer;
procedure SetMouseOverRow(const Value: integer);
{ Private declarations }
property MouseOverRow: integer read FMouseOverRow write SetMouseOverRow;
public
Feito isso vamos agora implementar no método SetMouseOverRow, o seguinte:
procedure TForm1.SetMouseOverRow(const Value: integer);
begin
FMouseOverRow := Value;
DbGrid1.Repaint;
end;
Agora vamos aos efeitos do DBGrid, selecione o mesmo e em Events, localize o evento :
onDBGrid1DrawColumnCell e implemente o seguinte :
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not ((gdFocused in State) or (gdSelected in state))
and (MouseOverRow = 1 + THackDBGrid(TDBGrid(Sender)).DataLink.ActiveRecord) then
begin
TDBGrid(Sender).Canvas.Brush.Color := $00C1FFFF;
TDBGrid(Sender).Canvas.Font.Color := clBlue;
TDBGrid(Sender).Canvas.Font.Style := [fsUnderline];
end;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
onDBGrid1MouseMove e implemente o seguinte :
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
pPosicao: TGridCoord;
begin
pPosicao := TDBGrid(Sender).MouseCoord(x,y);
MouseOverRow := pPosicao.Y;
end;
Depois disso tudo pronto, veja o resultado :
Fico por aqui e até a próxima Quick Tip.
Um abraço
Wesley Y
www.lithic.com.br