Autor Beitrag
dragonhunter1720
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 31.03.08 19:43 
hallo

ich möchte bilder bzw. icons in einen drawgrid (1 zeile und entsprechend viele spalten) laden...

leider hab ich keine ahnung wie ich das mache und habe nach ewigen googlen auch nichts wirkliches gefunden, was mein problem lösen könnte :cry:

....THX für jeden vorschlag :wink:
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mo 31.03.08 20:05 
Hier im Forum findet sich folgendes:

www.delphi-forum.de/...rawgrid+canvas+image
dragonhunter1720 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 31.03.08 20:26 
ja danke..
aber den eintrag habe ich mir auch schon angesehen
das problem: das geht nur für bitmaps und nicht für icon (bild.ico)

meine lösung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.DrawGriddhDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var bild: Tbitmap;
begin
  bild := Tbitmap.create;
  bild.LoadFromFile('...\hintergrundbild.bmp');
 with Sender as TDrawGrid do
    begin
    Canvas.StretchDraw(rect, bild);
    end;
end;

allerdings geht das auch nur für bmp und nicht für icons und genau die brauch ich :?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mo 31.03.08 20:44 
Nimm TIcon statt TBitmap, vielleicht geht's dann.
dragonhunter1720 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 31.03.08 21:07 
momentan bin ich schon so weit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.DrawGriddiDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var Bild: Timage;   
begin
Bild := Timage.Create(self);
Drawgriddi.Col := 0;
Drawgriddi.Row := 0;
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon0.ico');
DrawGriddi.Canvas.StretchDraw(rect, bild.Picture.Graphic);
//alle 36 zellen werden mit diesem icon belegt -->WARUM

Bild := Timage.Create(self);
Drawgriddi.Col := 1;
Drawgriddi.Row := 0;
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon1.ico');
DrawGriddi.Canvas.StretchDraw(rect, bild.Picture.Graphic);
//nur diese zelle (spalte 2) wird mit dem icon1 belegt

end;

das problem ist nur, dass das 2 feld/spalte immer wechselt zwischen dem icon0 und icon1 (paar mal in der sekunde)
ich weiß nicht wie ich sonst die einzelnen zellen separat ansteuern kann, damit nur das entsprechende icon in einem feld erscheint ???
:roll:

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mo 31.03.08 21:36 
Das DrawCell-Event kommt für jede einzelne Zelle im Grid. Die Parameter ACol und ARow geben an, in welche Zelle nun konkret gemalt wird. Du musst also anhand dieser beiden Parameter entscheiden, welches Bild du malst.
dragonhunter1720 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 31.03.08 21:54 
also:
ich wollte eigentlich ein drawgrid oder stringgrid (mir egal) mit 1 zeile und 36 spalten haben, in denen jeweils ein anderes icon geldaden werden soll --> 36 felder mit 36 verschiedenen icons

und das sollte eigentlich in den formcreate teil ??? also soll von anfang an schon in den draw/stringgrid geladen sein

GEHT DAS ???

:?:

---Moderiert von user profile iconNarses: Beiträge zusammengefasst und Delphi-Tags hinzugefügt---

hier sind meine ansätze:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
procedure TForm1.DrawGriddiDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var Bild: Timage;
begin
Bild:=Timage.Create(self);
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon0.ico');
DrawGriddi.Canvas.StretchDraw(rect, Bild.Picture.Graphic);

Bild:=Timage.Create(self);
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon1.ico');
Drawgriddi.Col := 0;
Drawgriddi.Row := 0;
DrawGriddi.Canvas.StretchDraw(rect, Bild.Picture.Graphic);
end;

//-----------------------------
procedure TForm1.DrawGriddhDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var Bild: Timage;
begin
Bild := Timage.Create(self);
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\hintergrundbilder\hintergrund.jpg');
DrawGriddh.Canvas.StretchDraw(rect, bild.Picture.Graphic);
end;

//--------------------
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var Bild: Timage;
begin
Bild:=Timage.Create(self);
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon6.ico');
StringGrid1.Col:=0;
StringGrid1.Row:=0;
StringGrid1.Canvas.Draw(0,0,Bild.Picture.Graphic);

Bild:=Timage.Create(self);
Bild.Picture.LoadFromFile('N:\Dokumente\info\desktop.ini projekt\bilder\icons\icon1.ico');
StringGrid1.Col:=1;
StringGrid1.Row:=0;
StringGrid1.Canvas.Draw(0,0, Bild.Picture.Graphic);
end;


ist da irgendwas dabei damit ich das erreichen kann (siehe lezten beitrag)

wäre echt nett wenn du mir dabei helfen könntest :D
THX
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Di 01.04.08 08:03 
Trenn dich von der Vorstellung, dass du in ein Grid "was reinlädst". Ein Grid zeigt Daten an. Welche es anzeigt, kannst du im OnDrawCell-Event selbst bestimmen.