Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Dibujar imagen con ImageList en StringGrid (https://www.clubdelphi.com/foros/showthread.php?t=17009)

neon 20-12-2004 10:48:54

Dibujar imagen con ImageList en StringGrid
 
Hola,

quiero poder dibujar un icono almacenado en un imagelist en un StringGrid en tiempo de ejecución. El StringGrid tiene asociado un pop-up, y al seleccionar un item de este pop-up me debe dibujar el icono en una determinada columna.
El problema esta en que al no realizar esto en el evento on draw tengo una serie de problemas para calcular la posicion deseada y para que lo pinte inmediatamente.
Lo hago de la siguiente forma :

ImageList5.Draw(StringGrid1.Canvas, x, y, 1)

Neftali [Germán.Estévez] 20-12-2004 18:24:44

Debes utilizar el evento DrawCell para pintar la celda, ya que es el adecuado para ello; En todo caso en el PopupMenu lo que debes hacer es activar/desactivar un flag que te marque si se pinta el bitmap o no.

En el DrawCell coloca un código como éste:
Código Delphi [-]
var
  bmp:TBitmap;
begin
  //Flag para saber si pinto la imagen (iniciualmente FALSE)
  if (not MustPintar) then begin
    Exit;
  end;
  // Coumna que quiero pintar
  if (ACol <> 1) then begin
    Exit;
  end;
 
  // Crear
  bmp := TBitmap.Create();
  // proteccon
  Try
    // Asignar la imagen
    ImageList1.GetBitmap(0,bmp);
    // pintarla
    StringGrid1.Canvas.Draw(Rect.Left + 2, Rect.Top + 2, bmp);
  finally
    bmp.Free;
  end;

Luego en tu popupmenu añades un código como éste:

Código Delphi [-]
  MustPintar := not MustPintar;
  StringGrid1.Repaint;


La franja horaria es GMT +2. Ahora son las 05:53:34.

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