Блог


Последние записи


Теги

Информация

Delphi, DevExpress, примеры, решения

Фильтр по тегу: цветной


Выделить строку или ячейку мигающей цветной рамкой?

Как привлечь внимание пользователя?
Как выделить строку или ячейке мигающей цветной рамкой?


+
+ Как выделить строку или ячейку мигающей цветной рамкой
procedure TForm1.FormCreate(Sender: TObject);
 var i,j: integer;
 begin
 cxGrid1TableView1.DataController.RecordCount := 20;
for i := 0 to 19 do
for j := 0 to cxGrid1TableView1.ColumnCount-1 do
 cxGrid1TableView1.DataController.Values[i,j]:= char(random(24)+65);
 end;
 
procedure TForm1.cxGrid1TableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
 var r: Trect;
 begin
 // вторая строка в гриде
if AViewInfo.RecordViewInfo.Index <> 1 then Exit;
 // вторая сторка в датасете
 // if AViewInfo.RecordViewInfo.GridRecord.Index <> 1 then Exit; 
ACanvas.Pen.Color := clBlue;
if (AViewInfo.Item.Index = 2) and Flag then ACanvas.Pen.Color := clred;
 R := AViewInfo.Bounds;
 dec(R.Bottom);
 dec(R.Right);
 ACanvas.SetBrushColor(clWhite);
 ACanvas.MoveTo(R.Left,R.Top);
 ACanvas.LineTo(R.Right-1,R.Top);
 ACanvas.MoveTo(R.Left,R.Bottom-1);
 ACanvas.LineTo(R.Right,R.Bottom-1);
if (AViewInfo.Item.Index = 0)or (AViewInfo.Item.Index = 2) then begin
 ACanvas.MoveTo(R.Left,R.Top);
 ACanvas.LineTo(R.Left,R.Bottom-1);
end;
if (AViewInfo.Item.Index = Sender.ItemCount-1) or (AViewInfo.Item.Index = 2) then begin
 ACanvas.MoveTo(R.Right-1,R.Top);
 ACanvas.LineTo(R.Right-1,R.Bottom-1);
end;
 ACanvas.Brush.Style := bsSolid;
 ACanvas.Font.Color := clBlack;
 Inflaterect(R,-2,2);
 ACanvas.DrawText(AviewInfo.Text, R, cxAlignVCenter);
 ACanvas.Brush.Style := bsSolid;
 ADone := true;
 end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 Flag := not Flag;
 cxGrid1TableView1.Invalidate(true);
 end;И закрасить фон
ACanvas.Pen.Color := clWhite;
 ACanvas.Canvas.Rectangle(R);
 ACanvas.Pen.Color := clBlue;
if (AViewInfo.Item.Index = 2) and Flag then ACanvas.Pen.Color := clred;



Взято с forum.dndsoft.net (сайт уже не работает)
добавлено: 13 июл 12 просмотры: 2474, комментарии: 0



cxGrid цветной footer

Footer колонок требуется, чтобы шрифт был красного цвета, если значение ячейки футера отрицательное или если значение футера равна нулю, то ничего не отображать.
Формат вывода в футере ',0.00', т.е. с разделителем групп разрядов!

procedure TForm1.cxGrid1DBTableView1DataControllerSummaryAft erSummary(
 ASender: TcxDataSummary);
 var
 SummFooterIdx: Integer;
 begin
 SummFooterIdx := ASender.FooterSummaryItems.IndexOfItemLink(cxGrid1 DBTableView1val);
if (SummFooterIdx > -1)
and not VarIsNull(ASender.FooterSummaryValues[SummFooterIdx])
and (ASender.FooterSummaryValues[SummFooterIdx] = 0) then
 ASender.FooterSummaryValues[SummFooterIdx] := Null;
 end;
 
procedure TForm1.cxGrid1DBTableView1StylesGetFooterStyle(
 Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
 AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
 var
 SummFooterIdx: Integer;
 begin
 SummFooterIdx := Sender.DataController.Summary.FooterSummaryItems.I ndexOfItemLink(AItem);

if (SummFooterIdx > -1)
and not VarIsNull(Sender.DataController.Summary.FooterSumm aryValues[SummFooterIdx]) then
begin
if Sender.DataController.Summary.FooterSummaryValues[SummFooterIdx] < 0 then
 AStyle := stlRed
else
 AStyle := stlBlack;
end;
добавлено: 13 июл 12 просмотры: 1851, комментарии: 0



Цветной cxGrid, как раскрасить грид с помощью стилей.

Для установки цвета шрифта, цвета фона и других свойств шрифта, лучше использовать свойство OnGetContentStyle.
Если использовать OnDrawCall, то при экспорте и печати данные будут неизменны, т.к. DevExpress Printing System получает стили у cxGrid и применяет их для печати.

Не обязательно кидать на форму TcxStyleRepository. Стили будем создавать прямо в коде события

procedure Grid1StylesGetContentStyle(Sender: TcxCustomGridTableView;
  ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
  out AStyle: TcxStyle);
begin
  if ARecord = nil then exit;
  if AItem = nil then exit;// эту проверку тоже полезно делать, если используете данный параметр
  if not ARecord.IsData then exit;
{если нужно красить только одну колонку, то нужно проверять AItem
if AItem.Index = TcxGridDBTableView(Sender).GetColumnByFieldName('имя_столбца_из_TDataSet').Index then
if AItem.Index = dbgApartREGION_NAME.Index then

}

  if not VarIsNull(ARecord.Values[colColor.Index]) then
  begin
    if not Assigned(AStyle) then
      AStyle := TcxStyle.Create(Sender);
    AStyle.Color := ARecord.Values[colColor.Index];// закрашиваем фон
  end;
end;


Не забывайте, что цвет шрифта определяется не AStyle.Font.Color, а AStyle.TextColor.
добавлено: 13 июл 12 просмотры: 3386, комментарии: 0