理论上任何语言实现的.Net元件,别的语言都能复用。但有没有一些特殊的地方呢?
用devexpress公司的元件来试试,它主要是用c#写的,很早有支持delphi.Net的,因为delphi.Net夭折,现在也没有纯支持prism的。
下载了DXperience7.3版本,是for VS2005的,支持.Net2.0,在VS2010下可以编译过。但换成.Net4.0编译不过。
在VS2010中叶不能正常使用,拉不到画面上。
从这里下载一个DXperienceUniversal-10.1.7试用版或破解版,它支持VS2010
http://smartsoft.5d6d.com/thread-5909-1-1.html
安装,过程很长。
安装后启动VS2011下的delphi prism,从菜单DevExpress/About…可以看到:
新建Visual C#的”windows窗体应用程序”,很慢(使用delphi是幸福的)。
在工具箱中找到ButtonEdit,TreeList,哦,好几百个元件,也没有像delphi xe那样的查找框,找晕了(使用VS的怎么受得了??)
把这两个元件拽到form1画面上去,写代码运行,没有问题。偶尔设计画面关闭后,再次打开时,会打不开,出现“类别DevExpress.XtraEditors.ButtonEdit找不到“这样的错误,可能与授权文件licenses.licx有关,没有细究。搞几次又正常了。
关闭解决方案,重新建立一个delphi prism的”windows form application”,还是很慢,找到ButtonEdit,TreeList,拖到mainform上,在treelist1上右键,选“Run designer“弹出编辑器,(devexpress真是强大),设定好Column,
写个增加Node的代码:
method MainForm.button1_Click(sender: System.Object; e: System.EventArgs);
var
vNode:DevExpress.XtraTreeList.Nodes.TreeListNode;
begin
vNode:=self.treeList1.AppendNode(nil,nil);
vNode.SetValue(Column_OID,100);
vNode.SetValue(Column_AID,'A0001');
vNode.SetValue(Column_Name,'Shanghai');
end;
写个控制customdraw事件显示不同颜色的代码:
method MainForm.treeList1_CustomDrawNodeCell(sender: System.Object; e: DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs);
var
o:Object;
begin
//o:=e.Node.GetValue(Column_OID);
//buttonEdit1.Text:=o.GetType.ToString;
if e.Node.GetValue(Column_OID).ToString='2' then
e.Appearance.BackColor:=Color.Red;
end;
运行,正常。
目前只确认了prism可以使用c#写的元件,有没有语言间特殊的地方因为引起问题还不知道........