Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Pintar Fila del DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=30372)

Palmiro 04-04-2006 23:19:14

Pintar Fila del DBGrid
 
hola gente, como andan....

Les presento el siguiente codigo

Código Delphi [-]
procedure TfrmCelulas.GrillaIntDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if (Sender as TDBGrid).Datasource.DataSet.RecNo mod 2 = 0 then
        (Sender as TDBGrid).Canvas.Brush.Color := $00FFEFDF
      else
        (Sender as TDBGrid).Canvas.Brush.Color := clCream;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
(Sender as TDBGrid).DefaultDrawColumnCell(rect,DataCol,Column,State);
end;

Les cuento lo que hace...
Pinta la filas de una DDBgrid con colores intercalados. por ej: una fila de amarrillo clarito y la siguiente de celeste clarito.
Hasta aqui funciona todo de 10.
He aqui va mi pregunta....

El problema que tengo con este procedimiento es que cuando selecciona una fila no se distingue la fila seleccione a pesar de que la opción del multiselect del dbgrid este activada, la unica manera de que saber que fila es la seleccionada es atraves del indicador.
¿Habria alguna manera de que la fila seleccionada cambie de color o algo mas visible con ella sin que se altere el resto de la grilla y al deseleccionar vuelva a estar como antes? Ya que he probado varias cosas y ninguna me salieron.
Si me puede ayudar diciendome de que manera tendria que cambiar el procedimiento mencionado o que debo hacer, desde ya se lo agradesco.

Espero que me haberme dado a entender.:)

cgomez 05-04-2006 23:09:30

ojala te sirva
 
If (gdFocused in State) then
dbgrid2.canvas.brush.color := clRed;
dbgrid2.DefaultDrawColumnCell(rect,DataCol,Column,State)

este codigo debes ingresarlo en
procedure TForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);

y el dgmultiselect en true...ojala te sirva, en este caso las pintara de rojo cuando estes sobre una fila.:D

Palmiro 05-04-2006 23:25:51

Gracias por tu ayuda, pero lo soluciones de la siguiente manera....

Código Delphi [-]
procedure TfrmCelulas.GrillaIntDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if (Sender as TDBGrid).Datasource.DataSet.RecNo mod 2 = 0 then
        (Sender as TDBGrid).Canvas.Brush.Color := $00FFF5EC
      else
        (Sender as TDBGrid).Canvas.Brush.Color := $00F5FEFE;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
 if (Sender as TDBGrid).SelectedRows.CurrentRowSelected then
         begin
          (Sender as TDBGrid).Canvas.Font.Color := clWhite;
          (Sender as TDBGrid).Canvas.Brush.Color := clRed
         end;
(Sender as TDBGrid).DefaultDrawColumnCell(rect,DataCol,Column,State);
end;

Lo que esta en color rojo es lo que agregue para obtener lo deceado.


La franja horaria es GMT +2. Ahora son las 08:51:08.

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