留言
同时我也看到P104您对此的专门解释,那个图说,
UICommand对象调用ICommand方法OnCreate为其传递信息,
而实际调用的OnCreate方法不是UICommand对象,而是那个ICommand对象nbcmd.OnCreate(this._App);
请问这个如何解释呢,麻烦明示下,谢谢
关于插件的具体功能,分为两种,一是实现自定义的功能,它只需要调用IApplication对象,比如一些纯粹的数据管理等;另一种是调用AE框架的功能,也就是充分利用了AE自身的一些UICommand对象,比如AddData功能。留言350中的例子,就是后一种。而留言351是前一种。
你应该注意到框架插件对象的功能,其实是分为两种的。
谢谢您啊,可是不管哪种插件功能实现,最终都要产生UI对象的实体,而这个实体要挂接在什么地方呢(一般都是挂接到工具条上),而书里说的是OnCreate,其参数(IAPplication) ,但无论是AE UICommand还是 一般的,最终要通过OnCreate产生UI实体,并放置到界面上,从书中没有发现有UICommand 控件UI的产生过程,而只是存放了UICommand对象。比如这个
nbcmd.OnCreate(this._App);
产生了UI可视化控件了吗,从插件实体(cPan)看,利用AE可以产生了UI可视化控件,但是产生结果似乎和定义的UICommand对象无关,还请明示,谢谢。
或者就按照这句来吧
nbcmd.OnCreate(this._App);
nbcmd是插件对象,而不是new UICommand对象,那么nbcmd产生的可视化控件和UICommand是怎么联系起来的,还请明示。
-----------------
界面上的UI控件产生过程见3.2章节。
一个插件是不负责自己在界面上生成自己的。它是由框架对象来完成的。
3.2已经读过几遍了,还有些不明白,nbcmd.OnCreate(this._App);
插件对象对象的OnCreate,是要被UICommand对象的OnCreate方法所调用吗
产生UICommand对象会自动插件对象的OnCreate方法吗?
“一个插件是不负责自己在界面上生成自己的。它是由框架对象来完成的”
可以说说框架对象是如何在界面上生成插件UI的呢,
难道this.uiCommandManager.Commands.Add(UICommand)就是让UICommand对象调用插件对象nbcmd.OnCreate方法生成该插件对象的UI吗,这个UICommand对象是如何调用nbcmd.OnCreate的,也请明示,谢谢
你把这个问题自己想的复杂化了,其实一个插件的创建过程是很简单的。3.2.3中的第一个循环,就是根据nbcmd的属性,生成一个UICommand对象,这就是nbcmd对应的界面插件UI对象。
nbcmd.OnCreate方法并不是生成插件对象的,它只是为将主框架对象传递给自己而已。UICommand对象也无需调用nbcmd的OnCreate,它通过事件机制调用一个UICommand_Click函数,这个函数的实现在3.3.3节中。
如果你暂时不能理解这部分,我建议你不要简单地看这本书,而是把所有的代码都敲进去,用程序来测试。
Leave a comment
Or, take a look at Archives and Categories
非常感谢您的回复啊,
P103 nbcmd.OnCreate(this._App);
P146 public void OnCreate(NBGIS.PluginEngine.IApplication hook {
if (hook != null)
{
this.hk = hook;
cmd = new ControlsAddDataCommandClass();
cmd.OnCreate(this.hk.MapControl);
}
}
后者应该是产生AE命令按钮的,但这个命令按钮和UICommand对象似乎没有关联吧,在IApplication对象中也没有相关信息,还请大师明示啊,谢谢您