Cita:
Empezado por mRoman
Tengo en un formulario un StatusBar, donde pinto una imagen la cual obtengo de un ImageList donde tengo 4 imagenes. Lo q necesito es que dependiendo del contenido de un campo de mi tabla, me cambie la imagen.....cada vez q se llame a un registro N este contendra el dato q se necesita para cambiar la imagen.
Ahora el problema q tengo es q el Evento OnDrawPanel solo me funciona la primera vez q abro el formulario donde tengo el StatusBar, pero necesito q cada vez q llame a un registro y este contenga un dato en el campo "status" me pinte una imagen de las 4 q tengo en el ImageList.
|
Hola mRoman.
No sé a que te referís cuando decis "cada vez que se llame a un registro", por lo que voy a usar el evento A
fterScroll del
TDataSet para el ejemplo.
También supongo para el mismo que el
TDataSet tiene un campo llamado STATUS que tiene los valores de los índices de las cuatro imágenes: 0,1,2,3. De tener otros valores los tendrás que evaluar con
case o
if para convertirlos al índice correspondiente.
Entonces:
Código Delphi
[-]
implementation
var
Indice: Integer = 0;
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
ImageList1.Draw(StatusBar1.Canvas, Rect.Left, Rect.Top, Indice)
end;
procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
begin
Indice:= DataSet.FieldByName('STATUS').AsInteger;
StatusBar1.Invalidate;
end;
...
Un saludo.