AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi StringGrid -> Beim Zeichnen, auch Zellen mit Text füllen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid -> Beim Zeichnen, auch Zellen mit Text füllen

Ein Thema von HolgerCW · begonnen am 8. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

StringGrid -> Beim Zeichnen, auch Zellen mit Text füllen

  Alt 8. Nov 2007, 11:07
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:
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]);
Nur wenn ich das wie oben mache, flackern alle Zellen, wo ich Text rein schreiben. Was kann ich tuen ?

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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:02
Zitat von HolgerCW:
Cells[ACol, ARow] := 'Test';
Wenn ich mich nicht irre, wird durch die Zuweisung eines Textes an eine Zeile Zelle ein Repaint ausgelöst. In einer Zeichenroutine wie OnDrawCell hat diese Zeile also IMHO nichts verloren. Das ist genauso sinnig, wie in einem OnPaint ein invalidate aufzurufen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:04
Hallo,

nimm DrawText für den Text.


Heiko
Heiko
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:08
Zitat von HolgerCW:
ich möchte wenn das Grid gezeichnet wird auch die Zellen dementsprechend mit Text füllen.
Das ist eine schlechte Idee! DAs OnDraw-Ereignis sollte nur zum eigentlichen Zweck - nämlich dem Zeichnen der Zelle - gebraucht werden. Hier kannst du jede Zelle in Abhängigkeit bsp. des Zellinhaltes(=Text) farblich anpassen.
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
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:10
Ok,

ich habe nun in Spalte 0, Zeile 0 eine Index = 'Test' geschrieben.

Wenn ich nun mit:

Delphi-Quellcode:
Canvas.Brush.Color := clInfoBK;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[0, 0]);
das Grid Zeichne wird auch überall Test ausgegeben ?

Nur Kann ich 'Test' später mit

Ausgelesen := StrinGrid.Cells[X,Y]; nicht auslesen. Warum ? und wie kann das klappen.

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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:15
Du gibst ja immer nur den Text aus, der in der Zelle 0,0 steht. Schau Dir mal diesen Thread an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#7

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:19
Zitat von HolgerCW:
das Grid Zeichne wird auch überall Test ausgegeben ?
GRRRRR.. das ist ja auch vollkommen logisch Das OnDrawCell geht IMMER JEDE Zelle durch und somit wird dann auch in jede Zelle der Zellinhalt von der Zelle[0,0] eingetragen

Wenn du den Text der entsprechend einzufärbenden Zelle drinstehen haben möchtest, dann musst du sinnvollerweise die ARow-/ACol-Parameter nehmen!!
Delphi-Quellcode:
...
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
...
[EDIT] grrr... DeddyH ist mir schon wieder zuvorgekommen *hmmpf*

Zitat von HolgerCW:
Nur Kann ich 'Test' später mit

Ausgelesen := StrinGrid.Cells[X,Y]; nicht auslesen. Warum ?
Weil du den Text nur auf das Canvas gezeichnet und NICHT der Zelle zugewiesen hast!
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#8

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:47
Alles klar,

würde ich hiermit den Text der Zelle zuweisen, oder nur rein zeichnen ?

Delphi-Quellcode:
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;
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 ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:50
Der Text wird in meinem Beispiel nur gezeichnet und nicht zugewiesen (wie ich bereits sagte, ist eine Zuweisung beim Zeichnen totaler Quatsch).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#10

Re: StringGrid -> Beim Zeichnen, auch Zellen mit Text fül

  Alt 8. Nov 2007, 12:54
@DeddyH: korrekt - wie ich ja auch bereits gesagt habe
@HolgerCW:
Zitat:
würde ich hiermit den Text der Zelle zuweisen,
NEIN
Zitat:
oder nur rein zeichnen ?
JA Beim OnDrawCell wird der bereits vorher zugewiesene Text der Zelle mit der entsprechenden Farbe des Hintergrundes/ Fonts etc gezeichnet
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
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