![]() |
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: |
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? |
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. |
Re: bild in draw- oder stringgrid laden
na, auf die Schnelle mal was zum StringGrid:
Delphi-Quellcode:
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
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; |
Re: bild in draw- oder stringgrid laden
Thanks erstmal
geht trotzdem nicht :wall: |
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! |
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?? :?: |
Re: bild in draw- oder stringgrid laden
Du musst das Rect aus den MethodenParametern verwenden!
|
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 |
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:
Schau dir mal in Ruhe die DelphiHilfe zu diesem Befehl an, dann wird es auch funktionieren!
ImageList.Draw(StringGrid.Canvas,Rect.Left,Rect.Top,0);
PS: Formatiere deinen Code bitte! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz