![]() |
StringGrid -> Beim Zeichnen, auch Zellen mit Text füllen
Hallo zusammen,
ich möchte wenn das Grid gezeichnet wird auch die Zellen dementsprechend mit Text füllen. wenn ich im Ereignis onDrawCell folgendes mache:
Delphi-Quellcode:
Nur wenn ich das wie oben mache, flackern alle Zellen, wo ich Text rein schreiben. Was kann ich tuen ?
Canvas.Brush.Color := clInfoBK;
Canvas.FillRect(Rect); Cells[ACol, ARow] := 'Test'; // <- Das bringt die Zelle zum flackern Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); Gruss Holger P.S.: Möchte das gerne in dem Ereignis onDrawCell machen, da ich dort schon viel berechne um die Zellen zu ermitteln, wo sich die Farbe ändern soll und nun auch der Text ergänzt werden soll. |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Zitat:
|
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Hallo,
nimm DrawText für den Text. Heiko |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Zitat:
Die Zuweisung des Zellinhaltes machst du in einer anderen Routine und sobald sich der Zellinhalt ändert, wird das OnDrawCell ausgelöst ;)[EDIT] @DeddyH: genau-das ist vollkommen richtig, was du da sagst ;) somit irrst du dich nicht :) |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Ok,
ich habe nun in Spalte 0, Zeile 0 eine Index = 'Test' geschrieben. Wenn ich nun mit:
Delphi-Quellcode:
das Grid Zeichne wird auch überall Test ausgegeben ?
Canvas.Brush.Color := clInfoBK;
Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[0, 0]); Nur Kann ich 'Test' später mit
Delphi-Quellcode:
nicht auslesen. Warum ? und wie kann das klappen.
Ausgelesen := StrinGrid.Cells[X,Y];
Mein Ziel ist es, das an allen Stellen wo mit onDrawCell eine Farbe gesetzt wird, ich im Ereignis onMouseMove über die Zelle fahre den Wert oder die Farbe dort auslesen kann. Gruss Holger |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Du gibst ja immer nur den Text aus, der in der Zelle 0,0 steht. Schau Dir mal
![]() |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Zitat:
Wenn du den Text der entsprechend einzufärbenden Zelle drinstehen haben möchtest, dann musst du sinnvollerweise die ARow-/ACol-Parameter nehmen!!
Delphi-Quellcode:
[EDIT] grrr... DeddyH ist mir schon wieder zuvorgekommen *hmmpf*
...
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); ... Zitat:
|
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Alles klar,
würde ich hiermit den Text der Zelle zuweisen, oder nur rein zeichnen ?
Delphi-Quellcode:
Wie kann ich am besten, eine Zelle Markieren, die im onDraw - Ereignis farblich geändert wurde, damit ich später darauf zugreifen kann, mit z.B. onMouseMove ?
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var s: string; R: TRect; begin if (ACol >= StringGrid1.FixedCols) and (ARow >= StringGrid1.FixedRows) then begin R := Types.Rect(Rect.Left, Rect.Top,Rect.Right - 2,Rect.Bottom - 2); s := StringGrid1.Cells[ACol,ARow]; DrawText(StringGrid1.Canvas.Handle,PChar(s),-1, R,DT_RIGHT or DT_BOTTOM or DT_SINGLELINE); end; end; Gruss Holger |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Der Text wird in meinem Beispiel nur gezeichnet und nicht zugewiesen (wie ich bereits sagte, ist eine Zuweisung beim Zeichnen totaler Quatsch).
|
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
@DeddyH: korrekt - wie ich ja auch bereits gesagt habe ;)
@HolgerCW: Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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-2025 by Thomas Breitkreuz