Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Image in DrawGrid :( (https://www.delphipraxis.net/11867-image-drawgrid.html)

shareholder 15. Nov 2003 14:32


Image in DrawGrid :(
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ImageList1: TImageList;
begin
  DrawGrid1.Canvas.Draw(1,1,ImageList1[0]);
end;
klick auf den button
im drawgrid zeile 1 und spalte 1 soll bild aus ImageList
geladen werden.

Fehler: Klasse besitzt keine Standarteigenschaft.
Kann mir jemand helfen ?

himitsu 15. Nov 2003 14:51

Re: Image in DrawGrid :(
 
Erst mal, wird an einer anderen Stelle ins Grid gezeichnet. (OnDrawCell)
Und zum Anderen, sollte auch ein Bild in der ImageList sein.
Ach ja, wie man die Grafiken eine ImageList zeichnet, steht in der OH. (TImageList / Draw)

Delphi-Quellcode:
Procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
Begin
  If (ACol = 1) and (ARow = 1) Then Begin
    ImageList1.Draw(DrawGrid1.Canvas, Rect.Left, Rect.Top, 0);
    { Der Bereich des Feldes, welches gezeichnet werden soll,        }
    {   liegt innerhalb des in Rect fesgelegten Bereich.             }
    { Und es ist besser nicht ausserhalb dieses Bereichs zu zeichnen. }
    { Also sollten für dieses Beispiel die Bilder nicht              }
    { grösser als die entsprechende Zelle sein.                      }
  End;
End;

shareholder 15. Nov 2003 18:09

Re: Image in DrawGrid :(
 
ich steig da nicht hinter ! :(

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Rect: TRect;
begin
    Rect.Left := 0; Rect.Top := 0;
    ImageList1.Draw(DrawGrid1.Canvas, Rect.Left, Rect.Top, 10);
end;
wenn ich nun auf den button drücke, so wird mir das 10. bild aus der ImageList1 ausgegeben.
doch wie stelle ich das an, das das bild, in reihe 2 spalte 4 positioniert wird ?

das bild und die zellen sind jeweils 50px * 50px groß.
das schon mit SELECTION probiert, bin dabei aber auch gescheitert.

was meinst du mit OnDrawCell. Kannst du mal bitte den Code posten ?

EDIT: Das Bild ist 50px * 50px groß, wird aber nur sehr verschrumpelt klein angzeigt, also nicht in der Originalgröße ! :( wie passe ich das bild an die zellengröße an ?

Habe schon mit DrawGrid1.CellRect(x,y); probiert...

VIELN DANK !! :cry:

Sharky 15. Nov 2003 18:13

Re: Image in DrawGrid :(
 
Hai shareholder,

OnDrawCell ist ein Ereigniss von TStringGrid. Dort, und nur dort, musst Du das Image zeichnen.
Genau wie es himitsu beschrieben hat. Du brauchst seinen Code doch nur noch so zu erweitern das die Funktion zum Zeichnen des Images nur ausgeführt wird wenn eine zusätzliche Bedingung (Boolean-Variable) zutrifft.

shareholder 15. Nov 2003 18:14

Re: Image in DrawGrid :(
 
muah, ich dreh durch... ich setze mich nochmal ran ! thx

shareholder 15. Nov 2003 18:31

Re: Image in DrawGrid :(
 
ich krieg's net gebacken !!! :wall:

was bezwecke ich denn überhaupt mit dieser abfrage:
Delphi-Quellcode:
if (ACol = 1) and (ARow = 1) Then Begin
? sehe darin keinen sinn. bitte klärt mich auf. :)

Sharky 15. Nov 2003 18:35

Re: Image in DrawGrid :(
 
OnDrawCell wird beim Zeichnen von jeder Zelle des StringGrids aufgerufen.
Über ACol und ARow kannst Du nun abfragen welche Reihe bzw. Spalte (und damit welche Zelle) gerade gezeichnet wird.

shareholder 16. Nov 2003 19:51

Re: Image in DrawGrid :(
 
ich hab die lösung von himitsu genommen und es funzt jetzt wunderbar. :)
Danke Euch Beiden !


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 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