Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TstringGrid Problem (https://www.delphipraxis.net/84997-tstringgrid-problem.html)

donmarkus 24. Jan 2007 13:41


TstringGrid Problem
 
Hi,
ich habe jetzt eine Stunde lang nach einer lösung gesucht, aber nix gefunden/verstanden.
Ich habe ein Tstringgrid und möchte ein kleines Bildchen in eine Zelle reinsetzen..... geht das? Wenn ja WIE??
Wenn das nicht geht dann könnte ich das auch mit dem Zellenhintergrund umgehen. Ich weiß dass man den Hintergrund einer einzelnen Zelle mit ondrawcell verändern kann. Das habe ich aber auch nicht hinbekommen, da ich das nicht verstanden habe, was ich gecodet habe :P ....
Könnt ihr mir helfen? Mit einem kleinen Bildchen in einer zelle wäre es am einfachsten......
Mfg DonMarkus

smudo 24. Jan 2007 13:47

Re: TstringGrid Problem
 
Du kannst dazu die Objects-Eigenschaft verwenden. Schau mal in die Hilfe.

donmarkus 24. Jan 2007 13:53

Re: TstringGrid Problem
 
Ja das könnte gehen. Aber wie kann ich ein gif bildchen IN das Programm einbinden und dort dann aufrufen?

smudo 24. Jan 2007 15:38

Re: TstringGrid Problem
 
Einfach in eine Imagelist laden.

Hier gabs schon mal einen interessanten Thread dazu. So könnte das funktionieren:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var bm: TBitmap;
begin
  if Sender <> NIL then
  with Sender as TStringGrid do
  begin
    bm := TBitmap.Create;
    try
      ImageList1.GetBitmap(0, bm); //statt 0 müsste man hier einen entsprechenden Index angeben
      Canvas.Draw(Rect.Left + 5, Rect.Top + 5, bm);
    finally
      FreeAndNil(bm);
    end;
  end;
end;
Du musst die Images (keine Gifs, besser BMPs) zur Entwurfzeit in die Imagelist laden und im OnDrawCell die entsprechnde ID angeben.

Gruß René

donmarkus 24. Jan 2007 15:50

Re: TstringGrid Problem
 
Hallo! Danke für den Tipp. Genau das habe ich gesucht!
Ich verstehe nur noch 2 sachen im quelltext nicht:

<<if Sender <> NIL then
with Sender as TStringGrid do>>


<<Canvas.Draw(Rect.Left + 5, Rect.Top + 5, bm);
finally
FreeAndNil(bm); >>

Kannst du mir erklären was Delphi da genau macht und für was das gut ist?

Mfg Donmarkus

smudo 24. Jan 2007 15:57

Re: TstringGrid Problem
 
Na erstmal prüf ich, ob der Prozedur ein Sender übergeben wurde - bei manuellem Aufruf kann der fehlen, aber eigentlich kannste das auch weglassen.

Dann caste ich den Sender als TStringgrid, da Sender ja TObject ist.

mit Canvas.Draw wird das Bild gemalt

und finally gehört zum Create von bm, also
Delphi-Quellcode:
bm := TBitmap.Create; //Bitmap erstellen
try
...
finally
  FreeAndNil(bm);     //Zum Schluss Bitmap wieder freigeben
end;

donmarkus 24. Jan 2007 16:03

Re: TstringGrid Problem
 
ok gut danke!
Wo kann ich dann angeben in welche zelle er das Bild reinmachen soll?

und beim kompilieren kommt folgender fehler:

[Error] Unit1.pas(71): E2250 There is no overloaded version of 'Rect' that can be called with these arguments

DANKE!

Klaus01 24. Jan 2007 17:57

Re: TstringGrid Problem
 
Zitat:

Zitat von donmarkus
o
[Error] Unit1.pas(71): E2250 There is no overloaded version of 'Rect' that can be called with these arguments

DANKE!

Du solltest um TRect nutzen zu können die Unit Types einbinden.

Grüße
Klaus

donmarkus 24. Jan 2007 18:27

Re: TstringGrid Problem
 
aha? und wie mache ich das?

Klaus01 24. Jan 2007 18:29

Re: TstringGrid Problem
 
Zitat:

Zitat von donmarkus
aha? und wie mache ich das?

Unter uses im Interface Teil Types eintragen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Seite 1 von 2  1 2      

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