Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   StringGrid Zeile bei bestimmten Werten anders farbig markier (https://www.delphipraxis.net/129285-stringgrid-zeile-bei-bestimmten-werten-anders-farbig-markier.html)

Ykcim 16. Feb 2009 13:27


StringGrid Zeile bei bestimmten Werten anders farbig markier
 
Hallo Zusammen,

ich weiß, dass zu diesem Thema (oder ähnlichen) schon einiges geschrieben wurde. Ich bitte daher um Geduld, denn ich habe leider noch nichts gefunden, was mir weitergeholfen hat.

Codes, wie ich einzelne Zellen oder ungerade Spalten Zeilen farbig markiere habe ich schon getestet...

Ich möchte, dass wenn in einer Zeile in der Spalte x eine 1 steht, dass dann diese Zeile farblich markiert wird. Das ist das erste, was ich nicht hinbekomme.

Das zweite ist, dass ich eventuell nur diese Zellen (es kommt öfters vor) farbig markiert haben möchte.

Natürlich soll der Text der Zeile(n)/Zelle(n) noch lesbar sein und auch die ganze Zeile(n)/Zelle(n) soll farbig markiert sein.

Mit Textout war der Text zwar wieder lesbar aber die Zelle wurde nur hinter dem Text farbig markiert...

Könnt Ihr mir dabei helfen?

Vielen Dank im Voraus

Ykcim

Ykcim 16. Feb 2009 13:59

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

mit diesem Code bekomme ich nur folgendes Ergebnis (Screenshot)

Delphi-Quellcode:
procedure TTest3.StringGrid4DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i:integer;
begin
      if StringGrid4.Cells[0,Arow]='135746' then
        begin
          StringGrid4.Canvas.Brush.Color := clYellow;
          StringGrid4.Canvas.TextOut(ACol,ARow,StringGrid4.Cells[ACol,ARow]);
          StringGrid4.Canvas.FillRect(Rect);
        end;
end;

worker 16. Feb 2009 14:01

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Zitat:

Zitat von Ykcim
Codes, wie ich einzelne Zellen oder ungerade Spalten Zeilen farbig markiere habe ich schon getestet...

Ich möchte, dass wenn in einer Zeile in der Spalte x eine 1 steht, dass dann diese Zeile farblich markiert wird. Das ist das erste, was ich nicht hinbekomme.

Wenn Du doch schon Codes getestet hast, bei denen einzelne Zellen koloriert worden sind, dann dürfte es doch ein Leichtes sein, diese Beispiele um eine Prüfroutine auf einen bestimmten Wert der Zelle zu erweitern.

Zitat:

Zitat von Ykcim
Mit Textout war der Text zwar wieder lesbar aber die Zelle wurde nur hinter dem Text farbig markiert...

FillRect
DrawText

Ykcim 16. Feb 2009 14:11

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Hallo worker,

als erstes: Danke für die Antwort!

Ich habe die Codes zwar bereits getestet, aber ich habe es nie hinbekommen, dass der Text ordentlich ausgegeben wird... Ich weiß nicht, woran das liegt. auch in dem aktuellen Code habe ich FILLRECT verwendet, aber wie in dem Screenshot zu sehen, wird der Text völlig falsch ausgegeben...

Kannst Du Dir das mal ansehen und mir Deine Meinung sagen?

Danke

Ykcim

taaktaak 16. Feb 2009 14:14

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
logisch, ist ja auch ein wenig durcheinander
Delphi-Quellcode:
StringGrid4.Canvas.Brush.Color := clYellow;
          StringGrid4.Canvas.TextOut(ACol,ARow,StringGrid4.Cells[ACol,ARow]);
          StringGrid4.Canvas.FillRect(Rect);
TextOut() muss nicht mit ACol/ARow "gefüttert" werden, sondern mit den Koordinaten des CellRectangles... dann schaut das auch anders aus :P

Ykcim 16. Feb 2009 14:43

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Ähm, und was heißt das genau? :oops:
Sorry, aber ich bewege mich gerade auf Neuland...

worker 16. Feb 2009 14:47

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Na dass Du nicht die Koordinaten Deiner Zelle (ACol, ARow) übergibst, sondern die Koordinaten des Rectangles, also des Zeichenbereiches Deiner Zelle:
Delphi-Quellcode:
StringGrid4.Canvas.TextOut(ARect.Left, ARect.Top, StringGrid4.Cells[ACol,ARow]);
ARect ist ein Parameter der DrawCell-Methode.

Ykcim 16. Feb 2009 14:54

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das hatte ich in der Zwischenzeit auch so auprobiert - ohne Erfolg. Siehe Screenshot im Anhang...

Was mache ich nur falsch?

Hier der Code zu dem hochgeladenen Screenshot2.jpg
Delphi-Quellcode:
procedure TTest3.StringGrid4DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i:integer;
begin
      if StringGrid4.Cells[0,Arow]='135746' then
        begin
          StringGrid4.Canvas.Brush.Color := clYellow;
          StringGrid4.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid4.Cells[ACol,ARow]);
          StringGrid4.Canvas.FillRect(Rect);
        end;
end;
Danke für Deine Mühe!

Ykcim

worker 16. Feb 2009 15:01

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
Falsche Reihenfolge ;)

Delphi-Quellcode:
   //Nur bei Spalte 0
   If ACol <> 0 Then
      Exit;

   If StringGrid4.Cells[0, ARow] = '135746' Then Begin
      StringGrid4.Canvas.Brush.Color := clYellow;
      StringGrid4.Canvas.FillRect(Rect);
      StringGrid4.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid4.Cells[ACol, ARow]);
   End;

Ykcim 16. Feb 2009 15:05

Re: StringGrid Zeile bei bestimmten Werten anders farbig mar
 
DANKE!!!!

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Jetzt sieht es klasse aus! Den Rest, bezüglich einzelne Zellen schaffe ich jetzt hoffentlich...

Vielen Dank

Ykcim


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 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