顯示具有 Express元件 標籤的文章。 顯示所有文章
顯示具有 Express元件 標籤的文章。 顯示所有文章

星期三, 5月 26, 2010

cxgrid要能取消選擇的作法

cxgrid 的optionSelection屬性MultiSelect設為True

cxGDBTV1MouseDown事件設定

procedure TfrmDataSwSelect.cxGDBTV1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i : integer;
begin

i := cxGDBTV1.DataController.FocusedRowIndex;
cxGDBTV1.DataController.ClearSelection; //清除
cxGDBTV1.DataController.SelectRows(i,i);
end;

cxGDBTV1KeyDown事件設定

procedure TfrmDataSwSelect.cxGDBTV1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssShift in Shift) then //shift要失效
Key :=0;
end;

清楚選取用

cxGDBTV1.DataController.ClearSelection;

初始時將cxgrid移到特定的選擇可用

ADOQuery1.First;
if ADOQuery1.Locate('swid', swid, []) then
iIndex := ADOQuery1.RecNo-1
else
iIndex:=-1;
if iIndex>=0 then
cxGDBTV1.DataController.SelectRows(iIndex,iIndex);

星期二, 5月 18, 2010

cxgrid的header加入右鍵選單

把元件TcxGridPopupMenu拉進來,grid屬性設定好要的cxgrid,onpopup事件加入下面程式碼

uses cxGridStdPopupMenu;

type
TMenuStringForCxGrid = class(TObject)
class procedure HeaderMenuProc(Sender:TObject);
end;

class procedure TMenuStringForCxGrid.HeaderMenuProc(Sender: TObject);
var
HM:TcxGridStdHeaderMenu;
begin
HM:=TcxGridStdHeaderMenu(Sender);
if HM.Items.Count<>17 then exit;
HM.Items[0].Caption:='&遞增排序';//遞增排序
HM.Items[1].Caption:='&遞減排序';//遞減排序
HM.Items[2].Caption:='&取消排序';//取消排序

HM.Items[4].Caption:='&以此欄位分組';//以此欄位分組
HM.Items[5].Caption:='&分組視窗';//分組視窗
HM.Items[6].Visible:=false;
HM.Items[7].Visible:=false;
HM.Items[8].Visible:=false;

HM.Items[10].Caption:='&隱藏此欄位';//隱藏此欄位
HM.Items[11].Caption:='&欄位選擇視窗';//欄位選擇視窗

HM.Items[13].Visible:=false;
HM.Items[14].Caption:='&最適欄寬';//最適欄寬
HM.Items[15].Visible:=false;
HM.Items[16].Caption:='&最適欄寬(所有欄位)';//最適欄寬(所有欄位)

end;

PopCxGridMenuProc(ASenderMenu); //右鍵選單中文化

//這個是呼叫到的funcion
function PopCxGridMenuProc(ASenderMenu: TComponent):boolean;
begin
if ASenderMenu is TcxGridStdHeaderMenu then
TcxGridStdHeaderMenu(ASenderMenu).OnPopup := TMenuStringForCxGrid.HeaderMenuProc;
result:=true;
end;

星期三, 2月 18, 2009

cxgrid 欄位 重新排序的popmenu

表單上放上TcxGridPopupMenu元件

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGridCustomPopupMenu,
cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGrid, cxGridStdPopupMenu;

type
TMenuStringForCxGrid = class(TObject)
class procedure HeaderMenuProc(Sender:TObject);
end;

type
TForm1 = class(TForm)
cxGrid1: TcxGrid;
cxGDBTV1: TcxGridDBTableView;
cxGLv1: TcxGridLevel;
cxGDBTV1Column1: TcxGridDBColumn;
cxGDBTV1Column2: TcxGridDBColumn;
cxGDBTV1Column3: TcxGridDBColumn;
cxGridPopupMenu1: TcxGridPopupMenu;
procedure cxGridPopupMenu1Popup(ASenderMenu: TComponent;
AHitTest: TcxCustomGridHitTest; X, Y: Integer;
var AllowPopup: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function PopCxGridMenuProc(ASenderMenu: TComponent):boolean;

implementation

{$R *.dfm}

class procedure TMenuStringForCxGrid.HeaderMenuProc(Sender: TObject);
var
HM:TcxGridStdHeaderMenu;
begin
HM:=TcxGridStdHeaderMenu(Sender);
if HM.Items.Count<>17 then exit;
HM.Items[0].Caption:='&'+'遞增排序';//遞增排序
HM.Items[1].Caption:='&'+'遞減排序';//
HM.Items[2].Caption:='&'+'取消排序';//

HM.Items[4].Caption:='&'+'以此欄位分組';//
HM.Items[5].Caption:='&'+'分組視窗';//
HM.Items[6].Visible:=false;
HM.Items[7].Visible:=false;
HM.Items[8].Visible:=false;

HM.Items[10].Caption:='&'+'隱藏此欄位';//
HM.Items[11].Caption:='&'+'欄位選擇視窗';//

HM.Items[13].Visible:=false;
HM.Items[14].Caption:='&'+'最適欄寬';//
HM.Items[15].Visible:=false;
HM.Items[16].Caption:='&'+'最適欄寬(所有欄位)';//

end;

function PopCxGridMenuProc(ASenderMenu: TComponent):boolean;
begin
if ASenderMenu is TcxGridStdHeaderMenu then
TcxGridStdHeaderMenu(ASenderMenu).OnPopup := TMenuStringForCxGrid.HeaderMenuProc;
result:=true;
end;

procedure TForm1.cxGridPopupMenu1Popup(ASenderMenu: TComponent;
AHitTest: TcxCustomGridHitTest; X, Y: Integer; var AllowPopup: Boolean);
begin
PopCxGridMenuProc(ASenderMenu);
end;

end.

星期一, 10月 13, 2008

cxgrid過濾器變成中文字串


uses cxClasses, cxFilterControlStrs, cxGridStrs, cxFilterConsts;

procedure SetCxGridFilterDialogString();
begin

//cxFilterBoolOperator
//cxSetResourceString(@cxSFilterBoolOperatorAnd,'AND');
//cxSetResourceString(@cxSFilterBoolOperatorOr, 'OR');
//cxSetResourceString(@cxSFilterBoolOperatorNotAnd, 'NOT AND');
//cxSetResourceString(@cxSFilterBoolOperatorNotOr, 'NOT OR');
cxSetResourceString(@cxSFilterRootButtonCaption ,'過濾器');//'Filter' '過濾器'
cxSetResourceString(@cxSFilterAddCondition ,'新增條件(&C)');//'Add &Condition' '新增條件(&C)'
cxSetResourceString(@cxSFilterAddGroup ,'新增條件群組(&G)');//'Add &Group' '新增條件群組(&G)'
cxSetResourceString(@cxSFilterRemoveRow ,'移除列(&R)');//'&Remove Row' '移除列(&R)'
cxSetResourceString(@cxSFilterClearAll ,'清除全部(&A)');//'Clear &All' '清除全部(&A)'
cxSetResourceString(@cxSFilterFooterAddCondition ,'新增條件');//'press the button to add a new condition' '新增條件'
cxSetResourceString(@cxSFilterGroupCaption ,'' );//'applies to the following conditions'
cxSetResourceString(@cxSFilterRootGroupCaption ,'' );//''
cxSetResourceString(@cxSFilterControlNullString ,'<空值>');//'' '<空值>'
cxSetResourceString(@cxSFilterErrorBuilding ,'無法建立過濾條件');//'Can''t build filter from source' '無法建立過濾條件'

//FilterDialog
cxSetResourceString(@cxSFilterDialogCaption ,'進階查詢-自訂過濾條件');//'Custom Filter' '進階查詢-自訂過濾條件'
cxSetResourceString(@cxSFilterDialogInvalidValue ,'設定值不合法');//'Invalid value' '設定值不合法'
cxSetResourceString(@cxSFilterDialogUse ,'可使用');//'Use' '可使用'
cxSetResourceString(@cxSFilterDialogSingleCharacter ,'代表任何單一字元');//'to represent any single character' '代表任何單一字元'
cxSetResourceString(@cxSFilterDialogCharactersSeries ,'代表任何連續字串');//'to represent any series of characters' '代表任何連續字串'
//cxSetResourceString(@cxSFilterDialogOperationAnd, 'AND');
//cxSetResourceString(@cxSFilterDialogOperationOr, 'OR');
cxSetResourceString(@cxSFilterDialogRows ,'請輸入過濾條件');//'Show rows where:' '請輸入過濾條件'

// FilterControlDialog
cxSetResourceString(@cxSFilterControlDialogCaption ,'進階查詢-過濾編輯器');//'Filter builder' '進階查詢-過濾編輯器'
cxSetResourceString(@cxSFilterControlDialogNewFile ,'未命名.flt');//'untitled.flt '未命名.flt'
cxSetResourceString(@cxSFilterControlDialogOpenDialogCaption ,'開啟已存在的過濾條件');//'Open an existing filter' '開啟已存在的過濾條件'
cxSetResourceString(@cxSFilterControlDialogSaveDialogCaption ,'儲存過濾條件至檔案');//'Save the active filter to file' '儲存過濾條件至檔案'
cxSetResourceString(@cxSFilterControlDialogActionSaveCaption ,'另存新檔...');//'Save As...' '另存新檔...'
cxSetResourceString(@cxSFilterControlDialogActionOpenCaption ,'開啟...');//'Open...' '開啟...'
cxSetResourceString(@cxSFilterControlDialogActionApplyCaption ,'套用');//'Apply' '套用'
cxSetResourceString(@cxSFilterControlDialogActionOkCaption ,'確定');//'OK' '確定'
cxSetResourceString(@cxSFilterControlDialogActionCancelCaption,'取消'); //'Cancel' '取消'
//cxSetResourceString(@cxSFilterControlDialogFileExt, 'flt');
//cxSetResourceString(@cxSFilterControlDialogFileFilter, 'Filters (*.flt)|*.flt');


//cxGrid主視窗類
//cxSetResourceString(@scxGridRecursiveLevels ,'');// 'You cannot create recursive levels');
//cxSetResourceString(@scxGridDeletingConfirmationCaption ,'');// 'Confirm');
//cxSetResourceString(@scxGridDeletingFocusedConfirmationText ,'');// 'Delete record?');
//cxSetResourceString(@scxGridDeletingSelectedConfirmationText ,'');// 'Delete all selected records?');
cxSetResourceString(@scxGridNoDataInfoText ,'<無資料顯示>');// ''); '<無資料顯示>'
//cxSetResourceString(@scxGridNewItemRowInfoText ,'');// 'Click here to add a new row');
//cxSetResourceString(@scxGridFilterIsEmpty ,'');// '');
cxSetResourceString(@scxGridCustomizationFormCaption ,'自訂');// 'Customization'); '自訂'
cxSetResourceString(@scxGridCustomizationFormColumnsPageCaption ,'隱藏欄位');// 'Columns'); '隱藏欄位'
cxSetResourceString(@scxGridGroupByBoxCaption ,'(請拖曳欄位標題至此作為分組檢視依據)');// 'Please Drag a column header here to group by that column'
cxSetResourceString(@scxGridFilterCustomizeButtonCaption ,'進階查詢-過濾編輯器'+'...');//'Customize...' '進階查詢-過濾編輯器' //原本為373 '自訂過濾條件...'
//cxSetResourceString(@scxGridColumnsQuickCustomizationHint ,'');// 'Click here to select visible columns');
cxSetResourceString(@scxGridCustomizationFormBandsPageCaption ,'類別');// 'Bands'); '類別'
//cxSetResourceString(@scxGridBandsQuickCustomizationHint ,'');// 'Click here to select visible bands');
//cxSetResourceString(@scxGridCustomizationFormRowsPageCaption ,'');// 'Rows');
//cxSetResourceString(@scxGridConverterIntermediaryMissing ,'');// 'Missing an intermediary component!'#13#10'Please add a %s component to the form.');
//cxSetResourceString(@scxGridConverterNotExistGrid ,'');// 'cxGrid does not exist');
//cxSetResourceString(@scxGridConverterNotExistComponent ,'');// 'Component does not exist');
//cxSetResourceString(@scxImportErrorCaption ,'');// 'Import error');
//cxSetResourceString(@scxNotExistGridView ,'');// 'Grid view does not exist');
//cxSetResourceString(@scxNotExistGridLevel ,'');// 'Active grid level does not exist');
//cxSetResourceString(@scxCantCreateExportOutputFile ,'');// 'Can''t create the export output file');
//cxSetResourceString(@cxSEditRepositoryExtLookupComboBoxItem ,'');// 'ExtLookupComboBox|Represents an ultra-advanced lookup using the QuantumGrid as its drop down control');

//cxGrid主視窗的Filter類
cxSetResourceString(@cxSFilterOperatorEqual ,'=');// 'equals';
cxSetResourceString(@cxSFilterOperatorNotEqual ,'!=');// 'does not equal';
cxSetResourceString(@cxSFilterOperatorLess ,'<');// 'is less than';
cxSetResourceString(@cxSFilterOperatorLessEqual ,'<=');// 'is less than or equal to';
cxSetResourceString(@cxSFilterOperatorGreater ,'>');// 'is greater than';
cxSetResourceString(@cxSFilterOperatorGreaterEqual ,'>=');// 'is greater than or equal to';
//cxSetResourceString(@cxSFilterOperatorLike ,'');// 'like';
//cxSetResourceString(@cxSFilterOperatorNotLike ,'');// 'not like';
//cxSetResourceString(@cxSFilterOperatorBetween ,'');// 'between';
//cxSetResourceString(@cxSFilterOperatorNotBetween , 'not between';
//cxSetResourceString(@cxSFilterOperatorInList , 'in';
//cxSetResourceString(@cxSFilterOperatorNotInList , 'not in';
//cxSetResourceString(@cxSFilterOperatorYesterday , 'is yesterday';
//cxSetResourceString(@cxSFilterOperatorToday ,'');//'is today';
//cxSetResourceString(@cxSFilterOperatorTomorrow ,'');// 'is tomorrow';
//cxSetResourceString(@cxSFilterOperatorLastWeek ,'');// 'is last week';
//cxSetResourceString(@cxSFilterOperatorLastMonth ,'');// 'is last month';
//cxSetResourceString(@cxSFilterOperatorLastYear ,'');// 'is last year';
//cxSetResourceString(@cxSFilterOperatorThisWeek ,'');// 'is this week';
//cxSetResourceString(@cxSFilterOperatorThisMonth ,'');// 'is this month';
//cxSetResourceString(@cxSFilterOperatorThisYear ,'');// 'is this year';
//cxSetResourceString(@cxSFilterOperatorNextWeek ,'');// 'is next week';
//cxSetResourceString(@cxSFilterOperatorNextMonth ,'');// 'is next month';
//cxSetResourceString(@cxSFilterOperatorNextYear ,'');// 'is next year';
//cxSetResourceString(@cxSFilterAndCaption ,'');// 'and';
//cxSetResourceString(@cxSFilterOrCaption ,'');// 'or';
//cxSetResourceString(@cxSFilterNotCaption ,'');// 'not';
//cxSetResourceString(@cxSFilterBlankCaption ,'');//'blank';
// derived
//cxSetResourceString(@cxSFilterOperatorIsNull ,'');// 'is blank';
//cxSetResourceString(@cxSFilterOperatorIsNotNull ,'');// 'is not blank';
//cxSetResourceString(@cxSFilterOperatorBeginsWith ,'');// 'begins with';
//cxSetResourceString(@cxSFilterOperatorDoesNotBeginWith ,'');// 'does not begin with';
//cxSetResourceString(@cxSFilterOperatorEndsWith ,'');// 'ends with';
//cxSetResourceString(@cxSFilterOperatorDoesNotEndWith ,'');// 'does not end with';
//cxSetResourceString(@cxSFilterOperatorContains ,'');// 'contains';
//cxSetResourceString(@cxSFilterOperatorDoesNotContain ,'');// 'does not contain';
// filter listbox's values
cxSetResourceString(@cxSFilterBoxAllCaption ,'(全部)');// '(All)'; '(全部)'
cxSetResourceString(@cxSFilterBoxCustomCaption ,'(自訂...)');// '(Custom...)'; '(自訂...)'
cxSetResourceString(@cxSFilterBoxBlanksCaption ,'(空值)');// '(Blanks)'; '(空值)'
cxSetResourceString(@cxSFilterBoxNonBlanksCaption ,'(非空值)');// '(NonBlanks)'; '(非空值)'

//Menu
//cxSetResourceString(@cxSGridNone ,'');//'None';
//cxSetResourceString(@cxSGridSortColumnAsc ,'');//'Sort Ascending';
//cxSetResourceString(@cxSGridSortColumnDesc ,'');//'Sort Descending';
//cxSetResourceString(@cxSGridClearSorting ,'');//'Clear Sorting';
//cxSetResourceString(@cxSGridGroupByThisField ,'');//'Group By This Field';
//cxSetResourceString(@cxSGridRemoveThisGroupItem ,'');//'Remove from grouping';
//cxSetResourceString(@cxSGridGroupByBox ,'');//'Group By Box';
//cxSetResourceString(@cxSGridAlignmentSubMenu ,'');//'Alignment';
//cxSetResourceString(@cxSGridAlignLeft ,'');//'Align Left';
//cxSetResourceString(@cxSGridAlignRight ,'');//'Align Right';
//cxSetResourceString(@cxSGridAlignCenter ,'');//'Align Center';
//cxSetResourceString(@cxSGridRemoveColumn ,'');//'Remove This Column';
//cxSetResourceString(@cxSGridFieldChooser ,'');//'Field Chooser';
//cxSetResourceString(@cxSGridBestFit ,'');//'Best Fit';
//cxSetResourceString(@cxSGridBestFitAllColumns ,'');//'Best Fit (all columns)';
//cxSetResourceString(@cxSGridShowFooter ,'');//'Footer';
//cxSetResourceString(@cxSGridShowGroupFooter ,'');//'Group Footers';
//cxSetResourceString(@cxSGridSumMenuItem ,'');//'Sum';
//cxSetResourceString(@cxSGridMinMenuItem ,'');//'Min';
//cxSetResourceString(@cxSGridMaxMenuItem ,'');//'Max';
//cxSetResourceString(@cxSGridCountMenuItem ,'');//'Count';
//cxSetResourceString(@cxSGridAvgMenuItem ,'');//'Average';
//cxSetResourceString(@cxSGridNoneMenuItem ,'');//'None';

end;

星期二, 8月 05, 2008

cxgrid分組加上共幾筆的資訊


//create呼叫
// 設定分組之群組資訊
SetCxGridSummaryItems(cxGDBTV1);

procedure TfmMain.SetCxGridSummaryItems(cxGDBTV: TcxGridDBTableView);
var
x: Integer;
sFormat :String;
begin
with cxGDBTV.DataController.Summary do
begin
BeginUpdate;
try
SummaryGroups.Clear;

DefaultGroupSummaryItems.BeginText := '{';
DefaultGroupSummaryItems.EndText := '}';

// Add summary group
with SummaryGroups.Add do
begin
// Add proposed grouping column(s)
// 即以這欄位作分組時會顯示summary items的資訊
for x:=1 to cxGDBTV.ColumnCount-1 do
begin
TcxGridTableSummaryGroupItemLink(Links.Add).Column := cxGDBTV.Columns[x-1];
end;
// Add summary items
sFormat := Format('共 %d 筆', [0]); // '共 0 筆'
with SummaryItems.Add as TcxGridDBTableSummaryItem do
begin
Kind := skCount; // 計算群組筆數
Position := spGroup;
Format := sFormat; // '共 0 筆'
end;
end;

{
// 增加寫出檔案大小統計功能
with SummaryGroups.Add do
begin
// Add proposed grouping column(s)
// 即以這欄位作分組時會顯示summary items的資訊
for x:=1 to cxGDBTV.ColumnCount-1 do
begin
TcxGridTableSummaryGroupItemLink(Links.Add).Column := cxGDBTV.Columns[x-1];
end;
// Add summary items
with SummaryItems.Add as TcxGridDBTableSummaryItem do
begin
//Column := cxGDBTV.GetColumnByFieldName('filesize');
//Column := cxGDBTV.GetColumnByFieldName('filesize'); //GetColumnByFieldName('cxGDBTV1filesize;
ItemLink := cxGDBTV.GetColumnByFieldName('filesize');
Kind := skSum;
Position := spFooter;
Format := 'TOTAL = 0';
end;
end;
//FooterSummaryItems.Add;
}
finally
EndUpdate;
end;
end;
end;

星期三, 10月 24, 2007

cxSplitter 物件使用

假如版面上到下分別為cxGrid cxSplitter ElTree
cxGrid屬性Align = alTop
cxSplitter屬性AlignSplitter = salTop
ElTree屬性Align = alClient

cxSplitter
屬性Control = cxGrid1
屬性HotZone = MediaPlayer9

如此cxSplitter點下去,cxGrid就會不見,ElTree則往上擴展開來。

星期五, 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));