Hallo Gemeinde,
folgendes Problem:
Ich habe ein Stringgrid mit n Zeilen und 5 Spalten als z. B. Artikelansicht. Dieses Stringgrid wird aus einer Datenbank gefüllt. Ein Feld der Datenbank enthält (wenn vorhanden) einen Verweis auf eine Grafik. Diese soll in Spalte 0 der jeweiligen Artikelzeile angezeigt werden. Ist keine Grafik vorhanden dann soll die Zelle im Grid leer bleiben.
Soweit so gut. Grafik in der Zelle anzeigen ist nicht das Problem, aber er zeigt immer die gleiche Grafik bei allen Artikeln.
So hab ich das bisher gemacht:
Deklaration:
Delphi-Quellcode:
var
ArtikelForm: TArtikelForm;
img : TImage;
liste : array of TImage;
Füllen des Arrays:
Delphi-Quellcode:
img := TImage.Create(self);
index := 0;
while not QueryArtikel.Eof do
begin
StringGrid1.RowCount := i + 1;
SetLength(Liste,index + 1);
if QueryArtikel.FieldByName('ABBILDUNG').AsString <> '' then
begin
img.Picture.Bitmap.LoadFromFile(pfad+QueryArtikel.FieldByName('ABBILDUNG').AsString);
Liste[index] := img;
end
else
begin
img.Picture.Bitmap.LoadFromFile(pfad+'00-000.bmp');
Liste[index] := img;
end;
StringGrid1.Cells[0,j] := '';//QueryArtikel.FieldByName('LIEFERANTENNR').AsString;
StringGrid1.Cells[1,j] := QueryArtikel.FieldByName('ARTIKELNR').AsString;
StringGrid1.Cells[2,j] := QueryArtikel.FieldByName('ARTIKELBEZ').AsString;
StringGrid1.Cells[3,j] := QueryArtikel.FieldByName('PREIS').AsString;
StringGrid1.Cells[4,j] := QueryArtikel.FieldByName('LIEFERANTENNR').AsString;
inc(j);
inc(index);
QueryArtikel.Next;
00-000.bmp ist eine weiße Bitmap als Platzhalter.
Zeichnen der Zelle:
Delphi-Quellcode:
if (ARow > 0) and (ACol = 0) then
begin
StringGrid1.Canvas.Draw(Rect.left,Rect.Top, Liste[ARow-1].Picture.Bitmap);
end;
Es gibt in der Auswahlliste einen korrekten Verweis auf eine vorhandene Grafik. In diesem Fall ist es der erste Datensatz. Normalerweise müsste doch in der ersten Zeile des Stringgrid die entsprechende Grafik stehen und beim Rest eine weisse (der Platzhalter), da sonst keine weiteren Verweise auf Grafiken vorhanden sind. Es kommen aber bei allen Artikeln nur der Platzhalter.
Was zum Geier hab ich übersehen??
Gruß NoWu