Wenn ich das richtig sehe, ist es nicht möglich beim onPaint der Zelle auf den aktiven Datensatz zuzugreifen.
Es gebe wohl eine Möglichkeit über DBCross1OnPrintCell auf die komplette Werte der CrossTab zuzugreifen, aber nur wenn die
Information auch als Spalte oder Zeile eingebunden ist. In meinem Fall wollte ich nicht die Farbe als Spalte einbauen.
Auch der Support hat sich in allen Richtung gedreht und gewendet, doch keine Lösung geliefert.
Da es keine andere Möglichkeit zu geben scheint, habe ich die Farbe mit den Zelldaten kombiniert und zur Laufzeit im Report über script
wieder zerlegt. Das funktioniert einwandfrei und ist schnell genug.
Delphi-Quellcode:
procedure DBCross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant);
var aColor:TColor;
str:String;
p:integer;
begin
//Cell value combined Color and Data Format: Color/Data = 32768/3,56
str := VarToStr(Value);
if str= '' then
begin
Memo.text := '';
Memo.Color := clNone;
end else
begin
p := pos('/',str); //get delimiter
aColor := StrToInt(copy(str,1,p-1)); //extract color
Memo.text := copy(str,p+1,length(str)); //extract and set data
Memo.color := aColor; //set color
end;
end;
Gruß Kostas