CXGRID颜色设置
DELPHI技术2010-09-05 20:03:54 阅读83 评论0 字号:大中小订阅
1、隔行显示
procedure TForm1.cxGrid1DBT ableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.GridRecord.Values[0] mod 2 = 0 then
ACanvas.Canvas.brush.color := clred;
end;
2、根据条件设置行颜色
procedure TFrmSalesHis.View1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('isgd').Index] = true then
begin
ACanvas.Canvas.Brush.Color := clred;
ACanvas.canvas.Font.Color := clblack;
end;
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////
var
AYellowStyle: TcxStyle;
procedure TForm1.FormCreate(Sender: TObject);
begin
//行颜色
AYellowStyle := TcxStyle.Create(Self);
AYellowStyle.Color := $0080FFFF;
AYellowStyle.TextColor := clMaroon;
end;
procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then AStyle := AYellowStyle;
end;
这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示黄色
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if vartostr(ARecord.Values[8]) = '已审' then
AStyle := AYellowStyle;
ARecord.Values[8] :cxgrid中第8列的值。。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
3、设置行列颜色
procedure TForm1.cxGrid1DBT ableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
//Item确定列(ID列的索引),RecordViewInfo确定行(Index行的索引)
//可以定位到某一行改变颜色
{if (AViewInfo.Item.ID = 0) and (AViewInfo.RecordViewInfo.Index = 0) then
ACanvas.Brush.Color := clred;}
//可以根据条件值确定改变某行颜色
if (trim(AViewInfo.RecordViewInfo.GridRecord.Values[4]) = 'HTT')
and (AViewInfo.Item.ID = 4) //确定到某一列,如果不加确定是某行底色
then
ACanvas.Brush.Color := clred;
end;
CxGrid控制行颜色
文章分类:综合技术
procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin
//Item确定列(ID列的索引),RecordViewInfo确定行(Index行的索引)
//可以定位到某一行改变颜色
{if (AViewInfo.Item.ID = 0) and (AViewInfo.RecordViewInfo.Index = 0) then
ACanvas.Brush.Color := clred;}
//可以根据条件值确定改变某行颜色
if (trim(AViewInfo.RecordViewInfo.GridRecord.Values[4]) = 'HTT')
and (AViewInfo.Item.ID = 4) //确定到某一列,如果不加确定是某行底色 then
ACanvas.Brush.Color := clred;
end;
CXGrid控件整行变颜色
CXGrid控件整行变颜色当某行符合条件的时候,给它变色:if not VarIsNull(A ViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldNam e('Status').Index]) then if A ViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('Status'). Index] = '选中' then begin ACanvas.Canvas.Font.Color := clBlack; ACanvas.Brush.Color := clRed; end;
2.去掉"Drag a column header here to group by that column" 方法
cxGrid1DBTableView1.OptionsView.GroupByBox置为False
3.去掉表头下三角数据
方法
cxGrid1DBTableView1.Optionscustomize.columnfiltering置为False
4.增加序号
方法
在dataset 里边增加Mycount 字段类型为string
在CXgrid 增加显示字段序号mycount
为该字段写事件
procedure Tfrm_form.ReDataSet2mycountGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
text:=inttostr(redataset2.RecNo);
end;
将序号绑定字段Mycount
5.CXgrid 增加一栏显示checkBox
方法
在dataset 里边增加MySelect字段类型为BOOLEAN
在CXgrid 增加显示字段选择select
设定select 字段的Properties为CheckBox . ReadOnly = False;
NullStyle = nssUnchecked
procedure Tfrm_form.cxGrid1DBTableView1CellClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
Row: Integer;
begin
inherited;
if https://www.sodocs.net/doc/ff1254255.html, = 'mycheck' then
begin
Row := cxGrid1DBTableView1.DataController.FocusedRecordIndex;
if cxGrid1DBTableView1.ViewData.Records[Row].Values[0] = True then cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := False else
cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := True; end;
end;
procedure Tfrm_form.cxGrid1DBTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Row: Integer;
begin
inherited;
//单选
Delphi Cxgrid 使用方法默认分类2010-04-16 16:06:52 阅读442 评论0 字号:大中小订阅
Delphi cxgrid 使用方法
1.绑定数据
方法
cxGrid1DBTableView1.DataController.DataSource:=DataSource1
2.去掉"Drag a column header here to group by that column"
方法
cxGrid1DBTableView1.OptionsView.GroupByBox置为False
3.去掉表头下三角数据
方法
cxGrid1DBTableView1.Optionscustomize.columnfiltering置为False
4.增加序号
方法
在dataset 里边增加Mycount 字段类型为string
在CXgrid 增加显示字段序号mycount
为该字段写事件
procedure Tfrm_form.ReDataSet2mycountGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
text:=inttostr(redataset2.RecNo);
end;
将序号绑定字段Mycount
5.CXgrid 增加一栏显示checkBox
方法
在dataset 里边增加MySelect字段类型为BOOLEAN
在CXgrid 增加显示字段选择select
设定select 字段的Properties为CheckBox . ReadOnly = False; NullStyle = nssUnchecked
procedure Tfrm_form.cxGrid1DBTableView1CellClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
Row: Integer;
begin
inherited;
if https://www.sodocs.net/doc/ff1254255.html, = 'mycheck' then
begin
Row := cxGrid1DBTableView1.DataController.FocusedRecordIndex;
if cxGrid1DBTableView1.ViewData.Records[Row].Values[0] = True then cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := False
else
cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := True; end;
end;
procedure Tfrm_form.cxGrid1DBTableView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Row: Integer;
begin
inherited;
//单选
// for Row:=0 to cxGrid1DBTableView1.DataController.RecordCount-1 do
// begin
// cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := False;
// end;
//多选
if cxGrid1DBTableView1.DataController.RecordCount<>0 then
begin
Row := cxGrid1DBTableView1.DataController.FocusedRecordIndex;
if cxGrid1DBTableView1.ViewData.Records[Row].Values[0] = True then
cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := False
else
cxGrid1DBTableView1.ViewData.Records[Row].Values[0] := True;
end;
end;
从ini文件中读出并设置
cxGrid1DBTableView1.RestoreFromIniFile('***.ini', false);
将设置保存到ini文件
cxGrid1DBTableView1.StoreToIniFile('***.ini', false);
=================
cxGrid里的数据导入到EXCEL,HTML,XML和TEXT(利用CXGRID自带的函数ExportGridToExcel,ExportGridToText,ExportGridToXML,ExportGridToHTML)
interface
uses cxGridExportLink;
begin
ExportGridToEXCEL('d:\hk.xsl',cxGrid1,True,True);
ExportGridToTEXT('d:\hk.txt',cxGrid1,True,True);
ExportGridToXML('d:\hk.xml',cxGrid1,True,True);
ExportGridToHTML('d:\hk.html',cxGrid1,True,True);
{ if DialogSave1.Execute then
begin
ExportGridToEXCEL(DialogSave1.FileName, cxGrid1, True, True);
end;}
end;
在主从TableView中根据主TableView得到对应的从TableView
var
ADetailDC: TcxGridDataController;
AView: TcxCustomGridTableView;
begin
with cxGrid1DBTableView1.DataController do
ADetailDC :=
TcxGridDataController(GetDetailDataController(FocusedRecordIndex, 0)); AView := ADetailDC.GridView;
end;
=====================================================================
=========
定位在第一行并显示内置编辑器
cxDBVerticalGrid1.FocusedRow := cxDBVerticalGrid1.Rows[0]; cxDBVerticalGrid1.ShowEdit;
=====================================================================
=========
隐藏 "
该文本存储在scxGridNoDataInfoText资源字符串,可以将该资源字符串的内容设为空
来隐藏该文本。
uses cxClasses, cxGridStrs;
...
cxSetResourceString(@scxGridNoDataInfoText, '');
//如果"
============================================================
删除应用过滤后的行
var
I: Integer;
begin
with
for I := 0 to ViewData.RecordCount - 1 do
begin
ViewData.Records[0].Focused := True;
DataController.DataSet.Delete;
end;
=============================================================
根据单元的值设置样式
procedure
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord.Values[AItem.Index] = aSomeValue then
AStyle :=
end;
procedure
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Email'); if VarToStr(ARecord.Values[AColumn.Index]) = '' then
AStyle := cxStyleNullEmail;
end;
=====================================================================
=========
TcxCustomGridTableView.FindItemByName,
TcxGridDBTableView.GetColumnByFieldName or
TcxGridDBDataController.GetItemByFieldName
with cxGrid1DBBandedTableView1.DataController do
AValue := Values[FocusedRecordIndex,
GetItemByFieldName('SomeFieldName').Index];
===================================================================
动态生成BandedView
var
AView: TcxCustomGridView;
begin
AView :=
TcxGridDBBandedTableView(AView).Bands.Add;
with TcxGridDBBandedTableView(AView).Bands.Add do
begin
Visible := False;
FixedKind := fkLeft;
end;
TcxGridDBBandedTableView(AView).DataController.CreateAllItems;
=====================================================================
=
当底层数据集为空时显示一条空记录
procedure