Newsgroup: it.comp.lang.delphi
Titolo: bitmap in griglia ??





 Come posso fare ad inserire una bitmap in una griglia???

 Devo visualizzare una griglia prendendo i dati da una 
query per cui ho usato un componente
  

ADV come DBAdvStringGrid ma la faccenda mi è sembrata complicata in 
quanto il campo bitmap da visualizzare non è un Field della TTable..


Ho provato allora a creare una griglia con il componente 
ADV
   
AdvStringGrid, sembrava 
semplice , ma non lo è (per
  
me) 
neppure in questo modo.


Il problema consiste nell’associare ad un campo Tfield della 
Ttable un immagine bitmap a seconda del valore del Tfield. Per esempio:


AdvStringGrid.Cells[0,Arow]:=Query.fieldbyname(‘citta’).value


AdvStringGrid.Cells[1,Arow]:=Query.fieldbyname(‘stato’).value


AdvStringGrid.Cell[2,Arow]:=
  
bitmap relativa alla bandiera dello 
stato


AdvStringGrid
  
ha 
la procedura .AddBitmap (Acol:Integre; Arow:Integre; Abitmap:Tbitmap; 
Transparent:Boolean;hal:TcellHAlign; val:Tcellvalign) ma non riesco a farlo 
funzionare, ammesso che sia la procedura giusta da usare.


Esiste anche la funzione .GetBitmap (Acol:Integre; 
Arow:Integre):Tbitmap ma forse uso male anche questa funzione,


Chiedo aiuto a voi tutti e alle vostre inesauribili fonti di 
conoscenza… (che ruffiano che sono)



Prima di risponderti ti volevo chiedere se puoi postare in formato testo
(alcuni client di news non leggono il formato html) grazie.
Non so se č cio che cerchi....questo codice scritto da Marco Cantů, ti
permette di disegnare, in una griglia, l'immagine contenuta in un database:
var
Bmp:TBitmap;
OutRect: Trect;
BmpWidth: Integer;
begin
// Rettangolo di output di default
OutRect:=Rect;
if Column.Field =Table1common_Name then
begin
// Disegna l'immagine
Bmp:=TBitmap.create;
try
Bmp.Assign (Table1Graphic);
BmpWidth:=(Rect.Bottom-Rect.Top)*2;
OutRect.Right:=Rect.Left+BmpWidth;
DBgrid1.Canvas.StrethDraw(OutRect,Bmp);
finally
Bmp.Free;
end;
// Reimposta il rettangolo, lasciando spazio per l'immagine
OutRect:=Rect;
OutRect.Left:=OutRect.Left+BmpWitdt;
end;
.....spiegato in parole semplici: crea un oggetto tbitmat su cui scrive il
contenuto del campo immagine e lo disegna sul canvas della griglia.
P.S. Ricordati di impostare la proprietŕ DefaultDrawing a false. Per il
codice usa l'evento ondrawcolumncell
Ciao
Gianni

""gianlorenzo vose"" ha scritto nel messaggio
| Come posso fare ad inserire una bitmap in una griglia???
| Ho provato allora a creare una griglia con il componente ADV
| AdvStringGrid, sembrava semplice ,
| ma non lo è (per  me) neppure in questo modo.
| AdvStringGrid  ha la procedura
| .AddBitmap ( ... ) ma non riesco a farlo funzionare, ammesso
| che sia la procedura giusta da usare.
Metodo semplice (provato alla svelta) da adattare alle tue esigenze:
- prendi un componente TImage e lo metti sulla form rendendolo invisibile;
- carichi in esso una Bitmap;
- usi la funzione .AddBitmap della ADVStringGrid in questo modo:
 // carica centrata nella cella [1,1] della grid la bitmap.
ADVStringGrid1.AddBitmap ( 1, 1,
                                          image1.Picture.Bitmap,
                                          True, haCenter, vaCenter);
Metodo complicato (non provato ma usato dagli sviluppatori negli esempi):
- usa un file di risorse;
Consiglio finale: scarica, se non l'hai gia' fatto, gli esempi per la
ADVStringGrid dal sito della TMS Software.
Ciao.
ACSH
---------------------------
La fine del mondo sta per arrivare ...
salvate i documenti aperti!