PDA

Ver la Versión Completa : Dibujar imagen con ImageList en StringGrid


neon
20-12-2004, 10:48:54
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:

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:


MustPintar := not MustPintar;
StringGrid1.Repaint;