Acroprise的ViewManager试用 |
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
最小精简了Acroprise的Client端脚本开发工具ViewManager3。
限于大小,没有包入权限等企业元件,也没有包入delphi的bpl,需要有delphi7+update1的vcl70.bpl等文件。
脚本语言如Python、Perl等在国外发展很好,到底好处在哪里,什么情况下可以考虑选择呢?
ViewManager在IDE上作得比较好,几乎在delphi里能用的元件编辑器、属性编辑器都能用,devexpress的dx、cx系列元件都可以安装并正常使用。
语法上嘛,当然没有delphi强了。 大家来评估一下,看看有啥优点和缺点。 VM里有几个地方可以加载Package,功能各不相同:
1.菜单Component->Package/ActiveX Component
此处为设计期包安装元件用,载入bpl后,会在Package包含的每个pas中寻找Register函数,如果找到就调用它。 2.菜单Tools->CodeCenter Option->Imported Package
以Package方式引入RTTI资料,供直译器查找使用,每个*_D7.pas的initialization部分会注册对应的*.pas的资料。
一般文件为*_imp.bpl,如vcl70_imp.bpl 3.菜单Tools->CodeCenter Option->Business Package
安装企业应用需要的Package,如公用元件Package,应用插件等。
久病成良医--多试
千人之诺诺,不如一士之谔谔--兼听
發表人 - mustapha.wang 於 2005/03/28 21:06:11
------
江上何人初见月,江月何年初照人
附加檔案:67938_output.rar
|
haitao
一般會員 發表:0 回覆:1 積分:0 註冊:2005-05-19 發送簡訊給我 |
我是想做成一个应用容器:
应用容器(一个普通的Delphi做的Application)动态加载外部的.DFM/.PAS文件或http流,并把pas里的事件实现代码和dfm里的控件的事件对应起来,
这样,容器不但可以show出Form,还完全实现原来的响应事件 现在最大的难题都解决了,有一个简单的demo可以使用了 作这个应用容器主要是受notes的“刺激”,它的思路很好,只是界面和脚本语言均不堪忍受
在b/s满天飞的时候,我还是喜欢用delphi作client:
现在有了脚本支持,就可以更上一层楼了,可以真的与notes完全一样了!
而且,设计界面、编写、调试、维护“脚本”,都可以直接借助于最可视化的Delphi!! 只是为了导入delphi中的一个类(使得脚本也能识别、运行这个类),需要不少代码,干脆写了一个代码生成工具:
它的存储内容为:(这是导入TCheckListBox的例子)
{Class2PS
ClassName=TCheckListBox
SubClassCount=1
SubClass0=TCustomListBox
FieldCount=8
1.0=AllowGrayed
1.1=Boolean
1.2=
1.3=
1.4=rw
2.0=Checked
2.1=Boolean
2.2=Integer
2.3=
2.4=rw
3.0=Flat
3.1=Boolean
3.2=
3.3=
3.4=rw
4.0=ItemEnabled
4.1=Boolean
4.2=Integer
4.3=
4.4=rw
5.0=Header
5.1=Boolean
5.2=Integer
5.3=
5.4=rw
6.0=HeaderBackgroundColor
6.1=TColor
6.2=
6.3=
6.4=rw
7.0=HeaderColor
7.1=TColor
7.2=
7.3=
7.4=rw
8.0=State
8.1=TCheckBoxState
8.2=Integer
8.3=
8.4=rw
Class2PS} 它生成的代码为:
Procedure TCheckListBox_AllowGrayed_R(Self: TCheckListBox; Var T: Boolean); Begin T := Self.AllowGrayed; End;
Procedure TCheckListBox_AllowGrayed_W(Self: TCheckListBox; T: Boolean); Begin Self.AllowGrayed := T; End;
Procedure TCheckListBox_Checked_R(Self: TCheckListBox; Var T: Boolean; t1:Integer); Begin T := Self.Checked[t1]; End;
Procedure TCheckListBox_Checked_W(Self: TCheckListBox; T: Boolean; t1:Integer); Begin Self.Checked[t1] := T; End;
Procedure TCheckListBox_Flat_R(Self: TCheckListBox; Var T: Boolean); Begin T := Self.Flat; End;
Procedure TCheckListBox_Flat_W(Self: TCheckListBox; T: Boolean); Begin Self.Flat := T; End;
Procedure TCheckListBox_ItemEnabled_R(Self: TCheckListBox; Var T: Boolean; t1:Integer); Begin T := Self.ItemEnabled[t1]; End;
Procedure TCheckListBox_ItemEnabled_W(Self: TCheckListBox; T: Boolean; t1:Integer); Begin Self.ItemEnabled[t1] := T; End;
Procedure TCheckListBox_Header_R(Self: TCheckListBox; Var T: Boolean; t1:Integer); Begin T := Self.Header[t1]; End;
Procedure TCheckListBox_Header_W(Self: TCheckListBox; T: Boolean; t1:Integer); Begin Self.Header[t1] := T; End;
Procedure TCheckListBox_HeaderBackgroundColor_R(Self: TCheckListBox; Var T: TColor); Begin T := Self.HeaderBackgroundColor; End;
Procedure TCheckListBox_HeaderBackgroundColor_W(Self: TCheckListBox; T: TColor); Begin Self.HeaderBackgroundColor := T; End;
Procedure TCheckListBox_HeaderColor_R(Self: TCheckListBox; Var T: TColor); Begin T := Self.HeaderColor; End;
Procedure TCheckListBox_HeaderColor_W(Self: TCheckListBox; T: TColor); Begin Self.HeaderColor := T; End;
Procedure TCheckListBox_State_R(Self: TCheckListBox; Var T: TCheckBoxState; t1:Integer); Begin T := Self.State[t1]; End;
Procedure TCheckListBox_State_W(Self: TCheckListBox; T: TCheckBoxState; t1:Integer); Begin Self.State[t1] := T; End;
//For Exec:TCheckListBox
Procedure RIRegister_TCheckListBox(Cl: TPSRuntimeClassImporter);
Begin
Cl.Add(TCustomListBox);
With Cl.Add(TCheckListBox) Do
Begin
RegisterPropertyHelper(@TCheckListBox_AllowGrayed_R, @TCheckListBox_AllowGrayed_W, 'AllowGrayed');
RegisterPropertyHelper(@TCheckListBox_Checked_R, @TCheckListBox_Checked_W, 'Checked');
RegisterPropertyHelper(@TCheckListBox_Flat_R, @TCheckListBox_Flat_W, 'Flat');
RegisterPropertyHelper(@TCheckListBox_ItemEnabled_R, @TCheckListBox_ItemEnabled_W, 'ItemEnabled');
RegisterPropertyHelper(@TCheckListBox_Header_R, @TCheckListBox_Header_W, 'Header');
RegisterPropertyHelper(@TCheckListBox_HeaderBackgroundColor_R, @TCheckListBox_HeaderBackgroundColor_W, 'HeaderBackgroundColor');
RegisterPropertyHelper(@TCheckListBox_HeaderColor_R, @TCheckListBox_HeaderColor_W, 'HeaderColor');
RegisterPropertyHelper(@TCheckListBox_State_R, @TCheckListBox_State_W, 'State');
End;
End;
//For Compile:TCheckListBox
Procedure SIRegister_TCheckListBox(Cl: TPSPascalCompiler);
Begin
With Cl.AddClassN(cl.FindClass('TCustomListBox'),'TCheckListBox') Do
Begin
RegisterProperty('AllowGrayed', 'Boolean', iptrw);
RegisterProperty('Checked', 'Boolean Integer', iptrw);
RegisterProperty('Flat', 'Boolean', iptrw);
RegisterProperty('ItemEnabled', 'Boolean Integer', iptrw);
RegisterProperty('Header', 'Boolean Integer', iptrw);
RegisterProperty('HeaderBackgroundColor', 'TColor', iptrw);
RegisterProperty('HeaderColor', 'TColor', iptrw);
RegisterProperty('State', 'TCheckBoxState Integer', iptrw);
End;
End;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |