Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Visualizar imagen en un DBCtrlGrid (https://www.clubdelphi.com/foros/showthread.php?t=97012)

adebonis 13-11-2024 19:49:11

Visualizar imagen en un DBCtrlGrid
 
Hola a todos.

Utilizo Delphi 2007 y en un TDBCtrlGrid enlazado a una consulta necesito visualizar una imagen sólo en los registros que cumplan la condición True/False de un campo en concreto.

No encuentro ningún evento que me permita dibujar en el DBCrtlGrid. ¿Sabéis cómo poder realizarlo?

Saludos y gracias.

Casimiro Notevi 13-11-2024 20:44:35

Es posible mostrar imágenes en un DBCtrlGrid de Delphi, aunque de manera indirecta, ya que este componente se utiliza principalmente para mostrar datos en un formato de cuadrícula y no está diseñado específicamente para manejar imágenes. Sin embargo, se puede lograr mediante el uso de un campo de tipo *Blob* en la base de datos.

Usando un campo de tipo Blob:
- Asegúrate de que en tu base de datos tienes un campo destinado a almacenar imágenes (por ejemplo, de tipo BLOB).
- En Delphi, puedes enlazar este campo con un control visual en el DBCtrlGrid.

Vinculando la imagen con el DBCtrlGrid:
- Utiliza un componente como TDBImage o TImage para mostrar la imagen en la cuadrícula.
- Debes asegurarte de que los datos de imagen en la base de datos estén correctamente recuperados y enlazados al campo adecuado.

Ejemplo de código:
Código Delphi [-]
procedure TForm1.DataModule1DataSource1DataChange(Sender: TObject; Field: TField);
begin
  if (Field = nil) or (Field.AsString = '') then
    Exit;
  // Supongamos que el campo "ImageField" es un campo de imagen en la base de datos
  DBImage1.Picture.LoadFromStream(DataSource1.DataSet.FieldByName('ImageField').AsStream);
end;

Uso de imágenes desde una carpeta:
Si no deseas almacenar las imágenes directamente en la base de datos, también puedes tener rutas de acceso a las imágenes en un campo de texto, y luego cargarlas dinámicamente en el control DBCtrlGrid con una función que lea la imagen desde un archivo en la ruta indicada.

adebonis 06-12-2024 19:21:13

Hola.

Como la imagen siempre es la misma, la he cargado en el componente TImage y la visualizo en función del valor del Campo "IMP2"

Lo he conseguido así:

Código Delphi [-]
procedure TfrAgenda.ListaAgePaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer);
begin
  Image1.Visible := DataSource1.DataSet.FieldByName('IMP2').AsBoolean;
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 18:36:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi