Run Time da CxGrid e Koşullu Renklendirme QuickReport Script

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Run Time da CxGrid e Koşullu Renklendirme QuickReport Script

Mesaj gönderen husonet »

Run Time da CxGrid e Koşullu Renklendirme QuickReport Script inden yararlanarak yaptığım bir çalışmayı paylaşmak istedim bu örnek beni bayağı kastırdı sizlerede lazım olacağını inanıyorum.

Kod: Tümünü seç

const
  MaxListColorCount = 17;

  ListColors: array[0..MaxListColorCount - 1] of TColor =
   (clDefault,   // 0
    clBlack,     // 1
    clMaroon,    // 2
    clGreen,     // 3
    clOlive,     // 4
    clNavy,      // 5
    clPurple,    // 6
    clTeal,      // 7
    clGray,      // 8
    clSilver,    // 9
    clRed,       // 10
    clLime,      // 11
    clYellow,    // 12
    clBlue,      // 13
    clFuchsia,   // 14
    clAqua,      // 15
    clWhite);    // 16

Kod: Tümünü seç

procedure TfrmXGrid.FormCreate(Sender: TObject);
begin
  inherited;
  FdtsTempGrid:= TpFIBDataSet.Create(nil);
  with FdtsTempGrid do
  begin
    Database := dtm.dtb;
    close;
    SQLs.SelectSQL.Clear;
    SQLs.SelectSQL.Text := dtsGrid.SelectSQL.Text;
    Open;
  end;
//  FdtsTempGrid := dtsGrid;
  FRowColorEvaluator := TQREvaluator.Create;
  FRowColorEvaluator.DataSets.Add(FdtsTempGrid); //Burada ikinci database kullanmamın amacı cxin draw celli dataları dökerken dataset i dbgrid gibi çevirmemesinden kaynaklanıyor TQREvaluator clasına adatığım dataset bir nevi Ali Cengiz yapmak için kullandım 

end;

Kod: Tümünü seç

procedure TfrmXGrid.cxViewCustomDrawCell(Sender: TcxCustomGridTableView;
  ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
  var ADone: Boolean);
//Yazar : husonet
//Tarih : 20.04.2007
//Ad Soyad : Hüseyin Özdemir.
var
  ABetColor: integer;
  AColor: TColor;
begin
  inherited;
   AColor := ACanvas.Brush.Color;
//  if vartostr(AViewInfo.GridRecord.Values[AViewInfo.Item.Index]) <> '' then
//    if FdtsTempGrid.Locate(tcxGridDbColumn(AViewInfo.Item).DataBinding.FieldName, vartostr(AViewInfo.Value), [loCaseInsensitive, loPartialKey]) then
    if FdtsTempGrid.Locate('ID', vartostr(AViewInfo.GridRecord.Values[0]), [loCaseInsensitive, loPartialKey]) then
    begin
      FRowColorEvaluator.Prepare('if((ADI = ''YDA'') and (KODU = ''fgtyv''),3,0)');
      if FRowColorEvaluator.Prepared then
      begin
        try
          ABetColor := FRowColorEvaluator.AsInteger;
          if (ABetColor > 0) and (ABetColor < MaxListColorCount) then
          begin
            AColor := ListColors[ABetColor];
          end;
        except
        end;
      end;
    end;
  ACanvas.Brush.Color := AColor;
end;
Eklenecek unitler

QRExpr

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla