Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Fastreport Kreuztabelle Zelle einfärben

  Alt 23. Jul 2013, 10:30
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
  Mit Zitat antworten Zitat