放一个cxGrid,为什么在声明中能出3个类
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
谁知道是怎么实现的?
看了很久它的代码也不知道在哪个地方实现这个功能的代码
我们一般写控件注册控件的类拖出来的时候只声明了这个类
cxgrid是怎么实现拖出来就声明了3个类的?
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
谁知道是怎么实现的?
看了很久它的代码也不知道在哪个地方实现这个功能的代码
我们一般写控件注册控件的类拖出来的时候只声明了这个类
cxgrid是怎么实现拖出来就声明了3个类的?
而且这两个类没有注册为控件的
注意cxgird中published部分的屬性,你就知道了...
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
不用管。
cxGrid2.Name := 'cxGrid2';
cxGrid2.Parent := Self;
cxGrid2.Left := 200;
cxGrid2.Top := 24;
cxGrid2.Width := 250;
cxGrid2.Height := 200;
cxGrid2.TabOrder := 2;
ShowMessage(IntToStr(cxGrid2.Levels.Count));以上代码可证明Level不是cxGrid创建就创建的。
在哪里出来的,我暂时没有发现。
就估计着,是不是跟 “在设计时,Create cxGrid的时候,顺便Create Level和View”。
判断 csDesigning in ComponentState 是在 IsDesigning 中。
lz有兴趣可以研究一下。
先不執行以下動作,測試 views and levels的count。應該是0。
// Creates a Level
Level := Grid.Levels.Add;
Level.Name := 'L1';
// Creates a View
View := Grid.CreateView(TcxGridDBTableView) as TcxGridDBTableView;
View.Name := 'V1';
//
Level.GridView := View; 懷疑是Dev exp實現了 專家類,當設計期創建一個cxgrid,收到通知後,會同時產生level及view。
查看source,搜索關鍵字“IOTAWizard”,大致看了一下,確實有相關的實現,但并未發現level及view的相關操作...
用起来也很繁琐
强大了就简单不了啊
TcxGridDBTableView和TcxGridLevel类。
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid; 实现的最终类名为TcxGrid,