Hola Valee.
Cita:
Empezado por Valee
...
Debido a que no encontré una forma de poner en un stringgrid una bandera del país que corresponde ...
|
Hola Valee.
No especificaste un detalle importante: Con que formato están almacenadas las imágenes.
Como comentas tener guardadas las imágenes en una carpeta estimo que el nombre del archivo de cada imágen se corresponde con el del país.
Bajo el supuesto anterior y tratándose de imágenes de formato JPG, te hice un ejemplo que usa un
TStringGrid con dos columnas. En la primera carga el nombre del país (extraído del nombre de archivo) y en la segunda la imágen almacenada en él.
La imágen se dibuja en StringGrid en el evento
OnDrawCell y se extrae de un
TImageList donde fué previamente almacenada.
Código Delphi
[-]
...
implementation
uses Jpeg;
...
procedure TForm1.btnLoadImagesClick(Sender: TObject);
const
IMG_PATH = 'C:\pruebas\Imagenes\';
var
FS: TFileStream;
SR: TSearchRec;
JPEG: TGraphic;
Bitmap: TBitmap;
c: Integer;
begin
if FindFirst(IMG_PATH+'*.JPG', faArchive, SR) = 0 then
begin
c:= StringGrid1.FixedRows;
repeat
FS:= TFileStream.Create(IMG_PATH+SR.Name, fmOpenRead);
JPEG:= TJPEGImage.Create;
Bitmap:= TBitmap.Create;
try
StringGrid1.Cells[0, c]:= ChangeFileExt(SR.Name, '');
FS.Seek(0, soFromBeginning);
JPEG.LoadFromStream(FS);
Bitmap.Width:= JPEG.Width;
Bitmap.Height:= JPEG.Height;
Bitmap.PixelFormat:= pf24bit;
Bitmap.Canvas.Draw(0, 0, JPEG);
ImageList1.Add(Bitmap, Bitmap);
Inc(c);
finally
JPEG.Free;
Bitmap.Free;
end;
until FindNext(SR) <> 0;
FindClose(SR);
StringGrid1.Invalidate;
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ACol = 1 then
with Sender as TStringGrid do
begin
Canvas.FillRect(Rect);
ImageList1.Draw(Canvas, Rect.Left, Rect.Top, ARow);
Canvas.TextOut(Rect.Left+ImageList1.Width, Rect.Top, Cells[ACol, ARow]);
end;
end;
Las imágenes deberán tener
tamaños homogéneos y deberás ajustar las propiedades
Height y
Width del ImageList a los de las imágenes almacenadas. Y a fin de la correcta presentación, lo mismo con las propiedades
ColWidths y
RowWidths del StringGrid.
Saludos