Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

星期五, 8月 17, 2007

cxGrid元件屬性要注意的

VirtualTable1
按右鍵Fields Editor->New Fiels(Name用英文字喔)
然後在VirtualTable1點兩下加入資料
屬性
Active = True
Filtered = True

DataSource1
屬性
DataSet = VirtualTable1

在cxGrid點兩下
Columns -> Add(記得要編輯其DataBinding->FieldName及ValueType;類型要對喔)
Summary -> Groups -> Add(點加入的Groups,並在Items按Add)

cxGrid1DBTableView1
DataController屬性
DataSource = DataSource1
Filter -> Options -> FcoCaselnsensitive = True

OptionsBehavior屬性
FocusCellOnTab = True
IncSearch = True

OptionsData屬性
Deleting = False 刪除
DeletingConfirmation = False 刪除確認
Editing = False 編輯
Inserting = False 插入

OptionsSelect屬性
CellSelect = False 代表同列同時選擇

OptionsView屬性
ColumnAutoWidth = True 自動調整欄寬
GroupByBox = False 最上面那一排不見
FocusRect = False 顯示按鈕框

Styles屬性
Content = cxStyleContent
FilterBox = cxStyleFilterBox
GroupByBox = cxStyleGroupByBox
Header = cxStyleHeader
Inactive = cxStyleSelection
Selection = cxStyleSelection


直接加入資料的方法
cxGrid2TableView1.DataController.recordCount:=2;
cxGrid2TableView1.DataController.Values[0, 0] := 'A';
cxGrid2TableView1.DataController.Values[0, 1] := 'B';
cxGrid2TableView1.DataController.Values[0, 2] := 'C';
cxGrid2TableView1.DataController.Values[1, 2] := 'ABC';

加入虛擬欄位,可改變欄位的資料,或像Excel計算
比如:
資料庫有三個欄位
[申購日期] [基金名稱] [漲跌幅]

但是想要顯示來格式如下;
[申購日期] [基金名稱] [漲跌幅(顯示百分比)] [訊號]

此時
ADOQuery應該有下列
[申購日期] 格式為date
[基金名稱] 格式為string
[漲跌幅] 格式為double
[漲跌幅t] 格式為string 因為我們要多加個百分比 FieldKind=fkCalculated
[訊號t] 格式為string FieldKind=fkCalculated

SQL語法同樣下
select 申購日期, 基金名稱, 漲跌幅

ADOQuery1的onCalcFields事件加入
DataSet.FieldValues['漲跌幅t'] := floattostr(DataSet.FieldByName('漲跌幅').Asfloat) + '%';
DataSet.FieldValues['訊號'] := DataSet.FieldByName('基金名稱').AsString;

cxGrid
新增欄位完後,去選擇每個欄位的FieldName
[申購日期] [基金名稱] [漲跌幅t] [訊號]
[漲跌幅t]的caption 改成"漲跌幅" 比較好看


如果要兩行的標題欄合併
點擊兩下cxgrid,將cxgrid1Level右邊的cxgrid1DBTabelView1刪除,然後自己新增cxgrid1BandedTabelView1,然後在Bands按add新增進去就是最上層的合併欄位了。

如果要將相同資料的列合併,可以點擊要合併相同資料的欄位,然後在Option->CellMerging->true

1:展開所有行cxGrid1DBTableView1.ViewData.Expand(True);
2:收起所有行cxGrid1DBTableView1.ViewData.Collapse(True);
3:展開當前行cxGrid1DBTableView1.ViewData.Rows[cxGrid1DBTableView1.DataController.FocusedRowIndex].Expand(True);
4:收起當前行cxGrid1DBTableView1.ViewData.Rows[cxGrid1DBTableView1.DataController.FocusedRowIndex].Collapse(True);


在特定欄位用不同的顏色,你可以在onCustomDrawCell事件中加入以下程式碼去判斷
var
str:string;
begin
str:=trim(VarAsType(AViewInfo.GridRecord.DisplayTexts[TcxGridDBTableView(Sender).GetColumnByFieldName('漲跌幅').Index], varString));

沒有留言: