![]() |
Image in Grid anzeigen: Problem
Hallo,
über folgenden Code zeige ich in einem StringGrid eine Grafik in der ersten Spalte der ersten Zeile:
Delphi-Quellcode:
Um nun die erste Spalte der zweiten Zeile ebenfalls mit einer Grafik zu bestücken, habe ich folgendes probiert:
ImageList1.Draw(TempTable.Canvas, 0, 0, 0);
Delphi-Quellcode:
Ergebnis: Keines. Das Image wird immer noch nur in der ersten Spalte der ersten Zeile angezeigt.
ImageList1.Draw(TempTable.Canvas, 0, 1, 0);
Frage 1: Wie kann ich auch die zweite (dritte, vierte, ...) Zeile bestücken (natürlich hat das Grid auch eine zweite Zeile, daran kann es also nicht liegen)? Frage 2: Wenn ich die Zeile, in der das Image liegt, markiere, wird das Image in den Hintergrund verschoben und die komplette Zeile (ohne Grafik) markiert. Wie kann ich es zu einem "festen Bestandteil" der Zeile machen? Danke Opa |
Re: Image in Grid anzeigen: Problem
Der 2. und 3. Parameter ist jeweils eine Pixelangabe, bei einem Pixel Verschiebung sieht man natürlich keinen Unterschied.
Damit das Bild immer angezeigt wird, würde ich OnDrawCell verwenden:
Delphi-Quellcode:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if (ACol = 1) and (ARow = 2) then //oder welche auch immer ImageList1.Draw(DrawGrid1.Canvas, Rect.Left, Rect.Top, 0); end; |
Re: Image in Grid anzeigen: Problem
Hallo,
Danke für die schnelle Antwort. Jetzt stellt sich mir natürlich die Frage, wie ich das dann für die einzelnen Zeilen hinbekomme. Gibt es eine andere Möglichkeit, als den zweiten Parameter jedesmal um 16 zu erhöhen, um die Zeile zu treffen, in der die Grafik dann angezeigt werden soll (sprich: Wenn die Zeile die dritte ist, einfach die Zeilenhöhe * 3 zu rechnen)? Wie kann ich OnDrawCell verwenden? Ich füge dem Grid eine neue Zeile hinzu bzw. lese verschiedene aus einer Ini-Datei ein, und anschließend soll die Grafik eingebunden werden. Danke Opa |
Re: Image in Grid anzeigen: Problem
Zeilenhöhe = StringGrid.DefaultRowHeight
|
Re: Image in Grid anzeigen: Problem
Die Lösung steht schon in meinem Quellcode: Der Parameter Rect gibt die Position und Ausmaße der zu zeichnenden Zelle an.
Für die Einträge würde ich es so machen:
Delphi-Quellcode:
Indizes: Array of Integer; //Jeweiliger Index der ImageList
//Neue Zeile: DrawGrid1.RowCount := DrawGrid1.RowCount + 1; SetLength(Indizes, Length(Indizes)); Indizes[High(Indizes)] := Ini.ReadInteger(...); //OnDrawCell begin if ACol = 0 then // nur 1. Spalte ImageList1.Draw(DrawGrid1.Canvas, Rect.Left, Rect.Top, Indizes[ARow]); end; |
Re: Image in Grid anzeigen: Problem
Hallo,
Danke für die Antworten. Ich glaube, ich hab's verstanden :dancer: Opa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz