AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Image in Grid anzeigen: Problem

Ein Thema von Opa Knack · begonnen am 12. Apr 2005 · letzter Beitrag vom 12. Apr 2005
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 13:32
Hallo,

über folgenden Code zeige ich in einem StringGrid eine Grafik in der ersten Spalte der ersten Zeile:

ImageList1.Draw(TempTable.Canvas, 0, 0, 0); Um nun die erste Spalte der zweiten Zeile ebenfalls mit einer Grafik zu bestücken, habe ich folgendes probiert:

ImageList1.Draw(TempTable.Canvas, 0, 1, 0); Ergebnis: Keines. Das Image wird immer noch nur in der ersten Spalte der ersten Zeile angezeigt.

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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 13:49
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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#3

Re: Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 14:23
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
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#4

Re: Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 14:27
Zeilenhöhe = StringGrid.DefaultRowHeight
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 14:53
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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#6

Re: Image in Grid anzeigen: Problem

  Alt 12. Apr 2005, 15:05
Hallo,

Danke für die Antworten.

Ich glaube, ich hab's verstanden

Opa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz