StringGrid: Farbliche Hinterlegung bestimmter Zellen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Arcadion
Beiträge: 4
Registriert: Mi 23. Apr 2014, 01:09

StringGrid: Farbliche Hinterlegung bestimmter Zellen?

Beitrag von Arcadion »

Sorry, dass ich mich schon wieder an euch wenden muss, aber nachdem ich etliche Foren und andere Seiten durchforstet hab, bitte ich euch lieber noch einmal um Hilfe. :oops:

Ich will, dass sich die Hintergrundfarbe einzelner Tabellenzellen je nach deren Wert ändert. Das heißt:

- In meiner zweispaltigen Tabelle sollen beispielsweise der wert links { TAB.Cells(0,0) } und rechts { TAB.Cells(1,0) } miteinander verglichen werden.
- Die Zelle, die den größeren Wert beinhaltet soll dann grün, und die andere rot hinterlegt werden. Eine ledigliche Änderung der Schriftfarbe wäre auch akzeptabel aber ich favorisiere die andere Variante ^^..

Habe bisher verschiedenste schreibweisen wie { TAB.Cells[0,0].fixedcolor:=clgreen; } oder { TAB.Cells[0,0].font.color:=clgreen; } in Kombination mit IF versucht aber er gibt mir immer den Meldung "illegal qualifier"..
Wäre echt super wenn jemand den Richtigen wüsste oder mir gleich sagen kann, ob es eine Möglichkeit gibt alle attributveränderten befehle von z. B. Tabellen einzusehen.

Nochmal entschuldigung für die zweite Frage in Folge und schonmal ein großes Danke im Vorraus,

Arcadion

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: StringGrid: Farbliche Hinterlegung bestimmter Zellen?

Beitrag von Komoluna »

Probier mal das Event OnPrepareCanvas deiner Stringgrid, sollte eigentlich deine Probleme lösen...

MFG
Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: StringGrid: Farbliche Hinterlegung bestimmter Zellen?

Beitrag von Vbxler »

Ich mache das in OnDrawCell:

Code: Alles auswählen

 
//----------------------------------------------------------
// farbliche Markierung der Projekte
//----------------------------------------------------------
procedure TfrmStdVerw.sgProjekteDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
  //Farben für den Status der Projekt
  aProjektStatusFarbe : array[0..1] of TColor = (TColor($E5D3E4), TColor($BDFDFF)); 
  iProjektStatus  : Integer = 0;
  sCelltext       : String = '';
begin
 
  //erst ab der zweiten Zeile werden die Zeilen eingefärbt
  if (ARow > 0) then
    begin
       if (ACol = sgProjekt_ProjNr) then
         begin
            //auslesen der aktuellen Daten
            sCelltext       := sgProjekte.Cells[aCol, ARow];
            iProjektStatus  := StrToInt(sgProjekte.Cells[sgProjekt_KleinProjekt, ARow]);
 
            //zuteilen der Farbe  und einfaerben der Zelle
            sgProjekte.Canvas.Brush.Color := aProjektStatusFarbe[iProjektStatus];
            sgProjekte.Canvas.FillRect(aRect);
 
            //ursprünglichen Text wieder einschreiben
            sgProjekte.Canvas.TextOut(aRect.Left + 3, aRect.Top + 3, sCelltext);
            sgProjekte.Canvas.Refresh;
         end;
    end;
end;  
Vielleicht hilt es Dir.
Vbxler
-------------------------

Antworten