Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   HighLight en Filas de un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=80852)

enecumene 18-01-2008 20:39:38

HighLight en Filas de un DBGrid
 
Este Truco es de Zarko Gajic de About.com, lo encontre y queria compartirlo con ustedes:

1. Primer paso es preparar el Hack del DBGrid en la sección de interface:

Código Delphi [-]
Type
   THackDBGrid = class(TDBGrid) ;

2. el siguiente paso es agregar un private, la propiedad "MouseOverRow" de tipo Integer que indica la posición del cursor sobre las filas:

Código Delphi [-]
private
    fMouseOverRow: integer;
    procedure SetMouseOverRow(const Value: integer) ;
    property MouseOverRow : integer read fMouseOverRow write SetMouseOverRow;

3. tercer paso es en el evento OnMouseMove del DBGrid:

Código Delphi [-]
procedure TForm1.DBGrid1MouseMove(
  Sender: TObject;
  Shift: TShiftState;
  X, Y: Integer) ;
var
  gc: TGridCoord;
begin
  gc := DBGrid1.MouseCoord(x, y) ;

  MouseOverRow := gc.Y;
end

4. Fijar la propiedad MouseOverRow que sirve para refrescar las filas al mover el mouse y que luego se le aplicara en el evento OnDrawColumnCell del DBGrid:

Código Delphi [-]
procedure TForm1.SetMouseOverRow(const Value: integer) ;
begin
  if fMouseOverRow <> Value then
  begin
    fMouseOverRow := Value;
    DBGrid1.Repaint;
  end;
end;

5. aqui se aplica la propiedad MouseOverRow en el evento OnDrawColumnCell:

Código Delphi [-]
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(DBGrid1).DataLink.ActiveRecord) then
  begin
    with DBGrid1.Canvas do
    begin
      Brush.Color := clSilver;
      Font.Color := clNavy;
    end;
  end;

  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
  end;
end;

y eso es todo y que lo disfruten!!

Saludos.


La franja horaria es GMT +2. Ahora son las 01:56:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi