Geht leider nicht weil ich in die Tabelle noch Überschriften, Summen, Differenzen etc. einfügen muss.
Sachen wie "negative Werte sollen rot makiert werden" sind kein Problem. Nur lässt sich vom Tabelleninhalt eben nicht immer ableiten wie ein Feld formatiert werden muss.
Das müsste ich manuell machen können.
Ich werd nochmal was probieren und meinen Versuch dann hier posten, vielleicht kann man mir dann besser helfen
Edit: Das muss jetzt der Vorführeffekt sein :/
Habs nochmal so gemacht wie ich es schonmal hatte. Aber jetzt funktionierts
Ich denke das ist nicht die einfachste und beste Methode das zu lösen, aber es funktioniert...
Wenn eine Zelle fett soll speicher ich die Koordinaten in einer TStringList. (Ich finde damit ist einfacher zu arbeiten als mit einem Array. Ich teile beide Koordinaten mit einem Strich:
Code:
listBold.Add(IntToStr(x)+'|'+IntToStr(y));
Meine OnDrawCell-Methode sieht dann so aus:
Code:
if listBold.Count > 0 then
begin
for i:=0 to listBold.Count-1 do
begin
if (ACol = StrToInt(AnsiLeftStr(listBold[i],AnsiPos('|',listBold[i])-1))) AND (ARow = StrToInt(AnsiRightStr(listBold[i],Length(listBold[i])-AnsiPos('|',listBold[i])))) then
begin
StringGrid1.Canvas.Brush.Color := StringGrid1.Color;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font := StringGrid1.Font;
StringGrid1.Canvas.Font.Style := [fsBold];
StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2,
StringGrid1.Cells[ACol, ARow]);
end;
end;
end;