Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi bild in draw- oder stringgrid laden (https://www.delphipraxis.net/111299-bild-draw-oder-stringgrid-laden.html)

Dragonhunter1720 1. Apr 2008 20:48


bild in draw- oder stringgrid laden
 
Hallo

mein problem:
ich habe ein stringgrid (oder drawgrid) mit 1 zeile und 36 spalten
darin wollte ich nun 36 verschiedene bilder laden, also pro zelle ein anderes bild

ich habe es mit dem drawcell probiert, musste aber feststellen das das nicht geht, weil er immer das erste bild in alle 36 zellen lädt

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\deskt op.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\deskt op.ini projekt\bilder\icons\icon6.ico');
StringGrid1.Canvas.StretchDraw(rect,Bild.Picture.G raphic);

nun habe ich versucht die einzelnen zellen mit Row und Cow anzusprechen, um so meine ziel ver verwirklichen
leider geht das auch nicht

auch im formcreate habe ich das nicht hinbekommen

:?: :?: :wall:

meine frage:
kann man im drawcell einzelne zellen ansprechen oder kann ich das irgendwie anders (z.B. im FormCreate) realisieren ???

THANKS für jede idee :spin2:

taaktaak 1. Apr 2008 20:59

Re: bild in draw- oder stringgrid laden
 
Moin, Moin,
kenne zwar DrawGrid nicht, wird aber wohl nicht grundlegend anders sein als StringGrid. Schau dir die Parameter der Methode mal an: ACol, ARow >> da hast du deine Zellansprache

PS : Jedes mal das Bild aus der Datei laden? Ist da nicht eine ImageList praktischer und schneller?

Dragonhunter1720 1. Apr 2008 21:11

Re: bild in draw- oder stringgrid laden
 
ja das habe ich schon getan

aber leider finde ich nichts, wie ich das verwenden soll

ARow:=0;
ACol:=0;
trozdem spricht er alle zellen an

DrawGriddh.Canvas.FillRect(CellRect(0, 0),bild.Picture.Graphic);

geht auch nicht!!

zudem bin ich noch nicht so der spezialist (nur schüler 8) )

hast du noch eine andere idee oder am besten gleich ein Bsp.

taaktaak 1. Apr 2008 21:25

Re: bild in draw- oder stringgrid laden
 
na, auf die Schnelle mal was zum StringGrid:
Delphi-Quellcode:
procedure u_sgTopicsDrawCell(Sender:TObject;ACol,ARow:Integer;Rect:TRect;State:TGridDrawState);
begin
  if ARow=3 then
    if ACol> 2 then
      with Sender as TStringGrid do
        with (Sender as TStringGrid).Canvas do begin
          Font.Color:=clBlack;
          if EditMode then if gdSelected in State then Brush.Color:=clBtnFace
                                                  else Brush.Color:=Color
   
                      else if gdSelected in State then begin Brush.Color:=clHighLight;
                                                             Font. Color:=clWhite;
                                                             end
 
                                                  else Brush.Color:=Color;
          FillRect(Rect);
          Rect.Right:=Rect.Right-lbLeftBorder;
          TextRect(Rect,Rect.Left+lbLeftBorder,Rect.Top+2,Cells[ACol,ARow]);
          end;
end;
Hat mit deiner konkreten Anforderung leider nix zu tun. Hier wird nur Text mit besonderer Formatierung ausgegeben, wenn die Zeile 3 und die Spalten >2 gezeichnet werden. Statt der Textausgabe musst du dann dein Icon zeichnen. - Hab' jetzt leider keine Zeit mehr: Muss für Töchterlein noch ein Referat fertig machen

Dragonhunter1720 1. Apr 2008 21:28

Re: bild in draw- oder stringgrid laden
 
Thanks erstmal
geht trotzdem nicht :wall:

taaktaak 1. Apr 2008 21:51

Re: bild in draw- oder stringgrid laden
 
So, Referat ist fertig!

Funktioniert trotzdem nicht?
Hm, ist OwnerDraw des Grids aktiviert?
DrawGriddh.Canvas.FillRect(CellRect(0, 0),bild.Picture.Graphic); << CellRect(0,0) spricht natürlich immer die erste Zelle an!

Dragonhunter1720 1. Apr 2008 21:56

Re: bild in draw- oder stringgrid laden
 
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\deskt op.ini projekt\bilder\hintergrundbilder\hintergrund.jpg') ;
DrawGriddh.Canvas.FillRect(CellRect(0, 0),bild.Picture.Graphic);
end;

Fehler: Undefinierter Bezeichner: CellRect

wie muss ich ihn denn definieren?? :?:

taaktaak 1. Apr 2008 22:00

Re: bild in draw- oder stringgrid laden
 
Du musst das Rect aus den MethodenParametern verwenden!

Dragonhunter1720 1. Apr 2008 22:04

Re: bild in draw- oder stringgrid laden
 
procedure TForm1.DrawGriddhDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

alt: DrawGriddh.Canvas.FillRect(CellRect(0, 0),bild.Picture.Graphic);

neu: DrawGriddh.Canvas.Rect(CellRect(0, 0),bild.Picture.Graphic); -->undefinierter bezeichner: rect
DrawGriddh.Canvas.FillRect(Rect(0, 0),bild.Picture.Graphic); -->operator oder semikolan fehlt

***bin noch anfänger :-D

taaktaak 1. Apr 2008 22:11

Re: bild in draw- oder stringgrid laden
 
So:
Alles Quatsch, was wir bisher gemacht haben! Mit FillRect werden keine Bilder gezeichnet! Wenn die Icons in einer ImageList sind (was sehr zu empfehlen ist), dann würden wir z.B. wie folgt ausgeben:
Delphi-Quellcode:
ImageList.Draw(StringGrid.Canvas,Rect.Left,Rect.Top,0);
Schau dir mal in Ruhe die DelphiHilfe zu diesem Befehl an, dann wird es auch funktionieren!

PS: Formatiere deinen Code bitte!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.
Seite 1 von 3  1 23      

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