AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid flackert

Ein Thema von MarcusB · begonnen am 25. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#1

Stringgrid flackert

  Alt 25. Okt 2004, 09:08
Hallo,

ich habe mal wieder ein Problemchen.

Ich habe ein Stringgrid und möchte, dass der Text der 1. Zeile in rot erscheint.
Daher habe ich in das OnDrawEvent des Grids folgendes eingebaut:

Delphi-Quellcode:
procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ARow=0) then
    grid.Font.Color := clRed
  else
    grid.Font.Color := clBlack;
end;
Dummerweise ist nun die 2.(!) Zeile rot und das ganze Grid flackert, als würde es permanent neu gezeichnet.
Was habe ich denn falsch gemacht?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Stringgrid flackert

  Alt 25. Okt 2004, 09:21
Zitat von MarcusB:
Ich habe ein Stringgrid und möchte, dass der Text der 1. Zeile in rot erscheint.
Daher habe ich in das OnDrawEvent des Grids folgendes eingebaut:
Delphi-Quellcode:
procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ARow=0) then
    grid.Font.Color := clRed
  else
    grid.Font.Color := clBlack;
end;
Dummerweise ist nun die 2.(!) Zeile rot und das ganze Grid flackert, als würde es permanent neu gezeichnet.
Was habe ich denn falsch gemacht?
Du hast Properties, die global für das ganze Grid gelten verändert. Das bewirkt ein Neuzeichnen
des gesamten Grids.
Du musst mit dem Canvas des Grids arbeiten:
Delphi-Quellcode:
procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
   canvas : TCanvas;
begin
  canvas := grid.Canvas; // temp. Variable zwecks Geschwindigkeit
  if (ARow=0) then
    canvas.Font.Color := clRed
  else
    canvas.Font.Color := clBlack;
end;
PS: guckst du da: http://www.delphipraxis.net/internal...ct.php?t=35695
falls du auch den Hintergrund einfärben willst und die Schriftfarb im Kontraste zum Hintergrund sein soll.
Andreas
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#3

Re: Stringgrid flackert

  Alt 25. Okt 2004, 10:00
Habe Deinen Code gerade mal ausprobiert, das Flackern ist auch weg, allerdings ist der Text der 1. Zeile nicht rot.

Wenn ich irgendwo z.B.
grid.Cells[0,0] := 'abc'; aufrufe, wird doch das OnDrawEvent aufgerufen, oder?
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:41 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