Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:01:47.


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
Copyright 1996-2007 Club Delphi