![]() |
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:
|
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Hmmm,
Ok, das ist mir nun alles klar. Jetzt habe ich mein Grid gezeichnet. In Zelle (1,1) ist nun die Farbe clInfoBK. Wie kann ich jetzt im MouseMove - Ereignis auslesen, wenn ich über die Zelle (1,1) fahre, das diese clInfoBk ist ? Gruss Holger |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Hallo,
im MouseMove Ereignis bekommst Du die x und y Koordinaten der Mausposition. Mit MouseToCell kannst Du diese Koordinaten in ZellKoordinaten umwandeln. Dann brauchst Du nur noch die Farbe ermitteln. Grüße Klaus |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Alles klar,
das habe ich auch schon gemacht. Und wie bekomme ich dann die Farbe ausgelesen ?
Delphi-Quellcode:
ist ja für das ganze Grid, und
STGrid.Color;
Delphi-Quellcode:
gibt es nicht.
STGrid.Cells[X,Y].Color;
Gruss Holger |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Wie wäre es mit StringGrid1.Canvas.Pixels(x,y):TColor?
Grüße Klaus |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Ist X = Spalte und Y = Zeile ?
... weil habe ja mit MousetoCell die Spalten und ZEilen herrausgesucht Gruss Holger |
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Zitat:
|
Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül
Das war mir klar,
dachte nur das auch eine Funktion gibt, der ich die Spalten übergeben kann. Hat sich aber erledigt, da es ja eigentlich keinen Sinn macht. Gruss und nochmal danke. Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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