Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Imagen en un dbgrid... (https://www.clubdelphi.com/foros/showthread.php?t=4981)

Sinaloense 04-11-2003 22:13:57

Imagen en un dbgrid...
 
Quiero que en la primer columna de un dbgrid me aparesca una imagen pero solo en la columna del campo seleccionado, esto es, si me desplazo con el teclado en el dbgrid la imagen solo aparecera en la primer columna de la fila seleccionada.

Ya he intentado muchas cosas y no me sale. =/

Alguna ayuda?

Gracias.

roman 04-11-2003 22:50:37

Cita:

Sinaloense comentó:
Ya he intentado muchas cosas y no me sale. =/

¿Y qué es lo que has intentado? Platícanos y quizá se nos ocurra algo a partir de lo que has probado.

// Saludos

Sinaloense 05-11-2003 05:23:46

Esto es lo que hago:

if not (gdSelected in State) then
begin
if Odd(Table1.RecNo) then
DBGrid1.Canvas.Brush.Color := TColor($00FEE2E8); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
begin
DBGrid1.Canvas.Brush.Color := TColor($0080FF00);
if DBGrid1.Columns[DataCol].Index=0 then
begin
DBGrid1.Canvas.FillRect(Rect);
ImageList1.Draw(dbgrid1.Canvas,Rect.Left+4,Rect.Top,0,True);
end;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

Sinaloense 05-11-2003 05:24:37

En el evento OnDrawColumCell

roman 05-11-2003 06:31:40

No soy muy ducho en esto de dibujar y es difícil leer el código sin indentar, pero una vez indentado:

Código:

if not (gdSelected in State) then
begin
  if Odd(Table1.RecNo) then
    DBGrid1.Canvas.Brush.Color := TColor($00FEE2E8);
   
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
begin
  DBGrid1.Canvas.Brush.Color := TColor($0080FF00);
  if DBGrid1.Columns[DataCol].Index=0 then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    ImageList1.Draw(dbgrid1.Canvas,Rect.Left+4,Rect.Top,0,True);
  end;
end;

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

pienso que la última llamada a DefaultDrawColumnCell no debe ir. Este método dibuja lo que se dibujaría normalmente de manera que da la impresión de que sobre-dibuja sobre lo que en las líneas anteriores dibujaste.

// Saludos

Sinaloense 05-11-2003 16:42:28

Lo logre!!!

Gracias por su ayuda.

Código:


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not (gdSelected in State) then
begin
  if Odd(Table1.RecNo) then
    DBGrid1.Canvas.Brush.Color := Tcolor($00E1E1E1);
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
begin
  if DBGrid1.Columns[DataCol].Index=0 then
  begin
    DBGrid1.Canvas.FillRect(Rect);
    ImageList1.Draw(dbgrid1.Canvas,Rect.Left,Rect.Top,0,True);
  end;
end;
end;


fsolispa 16-03-2011 06:24:44

Sobre el mismo tema
 
Revise la información que colocaste, el punto es que necesito que se muestre la imagen que se encuentra almacenada en la base de datos trabajo con una conexion a mysql, donde tengo un campo que me soporte imagenes, pero no puedo mostrarla dentro de la grid, al menos ya se que es posible, me podrian ayudar, gracias


La franja horaria es GMT +2. Ahora son las 10:57:58.

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