控件开发用户控件的主要步骤

控件开发  时间:2021-08-12  阅读:()

我想学C#自定义控件开发,现在看的头晕,是新手还在学习基础知识。谁能告诉一下怎么才能去学好它控件开发

新手的话,先学习一下现有的控件怎么用,如何把它们组织起来完成特定的任务,熟悉之后再琢磨自定义控件开发也不迟的。

学习不只是看示例,试着写一写,运行一下,成功以后再考虑如何作出改动,动手比较重要,比你看十遍的效果都要好得多,希望对你有帮助。

如何开发ActiveX控件

ActiveX技术虽然是一项古老的技术,但是却有着广泛的应用,支付宝的密码输入控件,各大银行的密码输入控件,网页聊天室中的截屏功能,网页播放器中的p2p播放...甚至Flash,Silverlight等等,在IE中都表现为ActiveX。

虽然C#也能开发"用于网页应用",能达到类似ActiveX的效果,但是有一个要命的问题是必须得安装几百M的 Framework框架,如果仅仅为了安全的输入一个密码,而要用户下载几百M的安装程序,这是很多人不能接受的,Delphi做为win32下的原生开发工具,能很好的支持微软各种"古老"的经典技术。

(再做点小广告:delphi的kyrix版本还能编译跨平台的应用哦!) ok,开工吧: 开发工具:推荐用delphi 2010(d7也可以,不过添加属性,方法等过程要手动,稍微麻烦点) 1.启用delphi2010-->File->New->Other-->Active Library 2.项目命名为MyActiveX 3.File-->Save All 全部保存 实际上这样就能编译了,不过只是空的dll 4.File-->New-->Other-->Active Form 改名为MyForm 将对应的单元文件,保存为UMyForm.pas 5.打开eX.ridl文件,切换到design视图,选中IMyForm接口,右击New-->Property 添加一个属性Msg 将Msg属性的Type改为BSTR 即WideString类型 完了之后,点击工具栏中的Refresh Implementation(即上图中工具栏中圈起来的部分)--这一步很重要,点击之后,它将自动生成属性Msg对应的声明和实现代码模板 6.打开UMyForm.pas--即ActiveForm对应的单元,找到Set_Msg以及Get_Msg的实现部分,补充代码如下: function TMyForm.Get_Msg: WideString; begin result:=_msg; end; procedure TMyForm.Set_Msg(const Value: WideString); begin _msg := value; end; 当然TMyForm的private部分,得先加一个私有成员 type TMyForm = class(TActiveForm, IMyForm) private { Private declarations } _msg:WideString; ... 这样我们就为即将生成的ActiveX控件,添加了一个字符串类型的属性Msg,下面来测试一下: 7.编译项目,会生成一个MyActiveX.ocx,在运行栏里输入 regsvr32 C:Usersjimmy.yang\Delphi_activexMyActiveXMyActiveX.ocx 注:这里ocx的路径,请各位根据自己的实际路径修改 这样就完成了ocx的注册。

8.放到html里测试一下: <OBJECT ID='x' name='x' CLASSID='CLSID:52D17094-0687-4A2F-B2DB-30F3189AC659' align=center hspace=0 vspace=0 ></OBJECT> <script type='text/JavaScript'> var x = document.getElementById("x"); alert(x.Msg); </script> 关于CLSID在哪里查看,打开:MyActiveX_TLB.pas文件,定位到下面这里: const // TypeLibrary Major and minor versions MyActiveXMajorVersion = 1; MyActiveXMinorVersion = 0; LIBID_MyActiveX: TGUID = '{49138437-8265-4B1A-9EAE-D0F615D68464}'; IID_IMyForm: TGUID = '{54A20855-29A3-4C92-85DE-A419DA457C7A}'; DIID_IMyFormEvents: TGUID = '{60BBC967-E1E6-4E98-BAE5-776BFD06E9CC}'; CLASS_MyForm: TGUID = '{52D17094-0687-4A2F-B2DB-30F3189AC659}'; 其中 CLASS_MyForm: TGUID对应的就是ClassID 运行后,除了弹出一个空白的警告框,暂时看不到其它:)(可不就是这样么?Msg属性没给任何初始值,当然是空字符串,所以弹出一个空的警告框是正常的) 9.我们再来添加一些控件和方法,以验证刚才设置的属性确实有效 在MyForm上添加一个文件框,一个按钮 按钮的事件如下: procedure TMyForm.Button1Click(Sender: TObject); begin _msg:= self.Edit1.Text; end; 即把文本框的值赋给属性Msg 再继续定位到Set_Msg,略做修改 procedure TMyForm.Set_Msg(const Value: WideString); begin _msg := value; self.Edit1.Text := _msg; end; 即设置Msg属性时,同时也把值显示在文本框里,以便等会儿我们好测试在js中给activeX属性赋值的效果 ok了,再来测试一下,编译一下,如果通不过,请先运行 regsvr32 C:Usersjimmy.yang\Delphi_activexMyActiveXMyActiveX.ocx /u 将刚才注册的ocx反注册,同时关掉浏览器,不然该ocx文件一直被占用,无法更新. 修改一下html的代码: <OBJECT ID='x' name='x' CLASSID='CLSID:52D17094-0687-4A2F-B2DB-30F3189AC659' align=center hspace=0 vspace=0 ></OBJECT> <hr /> <input type='button' value='显示Msg属性的值' onclick='ShowMsg()'/> <input type='button' value='设置Msg属性的值' onclick='SetMsg()'/> <script type='text/JavaScript'> var x = document.getElementById("x"); var ShowMsg = function(){ alert(x.Msg); } var SetMsg = function(){ x.Msg = 'js传过来的值'; } </script>

HTML Layout 控件如何增强了使用 ActiveX 控件开发网页的能力?

? ? ?A:HTML Layout 控件支持由 W3C 公布的扩展 HTML,允许在网页上精确定位对象。

原先,HTML 不允许网页开发者使用 X、Y 坐标在网页上精确定位元素,也不允许叠盖对象。

新增加的的“2-D”布局功能,使开发者可以完成更复杂的设计,为用 户开发出更好的网络应用提供了支持。

通过实现新的 W3C HTML 扩展,HTML Layout 控件为在 IE 中显示的 ActiveX 控件提供了更先进的布局选项。

HTML Layout 控件是 IE3.0 的新增组件,并被集 成到 IE 完全安装版中。

(HTML Layout 控件也是 ActiveX ControlPad 的一部分,可通过 MSDN 库安装。

由于提供了基于 WYSIWYG(所见即所得)页的全帧编辑器,ActiveX Control Pad 可以与 HTML Layout Control 相结合使用。

这使得用 ActiveX 控件开发先进的二维风格的 HTML 设计变得更加简单。

?

用户控件的主要步骤

第二种开发服务器控件的方法,即开发用户控件。

创建用户控件与创建普通ASP.NET Web页面类似,但是如同简述的那样,它们会有些不同。

下面列举了创建用户控件必须采取的主要步骤。

(1)创建一个扩展名为.ascx的文本文件。

这是用户控件和ASP.NET Web页面的第一个不同点,后者使用的扩展名为.aspx。

(2)在文本文件顶部添加@Control指令,并通过Language属性来设置所选择的编程语言,例如C#。

这是用户控件和Web页面的第二个不同点。

后者使用@Page指令而不是@Control。

(3)向文本文件添加HTML标记文本和ASP.NET服务器控件。

可以添加除html、body和form之外的任何HTML标记。

这是因为用户控件不能单独使用,而必须作为Web页面的一部分使用。

这是用户控件和Web页面的第3个不同点。

由于Web页面自身独立,因此最终用户能够直接访问它,对于用户控件则不是这样。

Virmach款低价VPS可选可以选择多个机房,新增多款低价便宜VPS主机7.2美元起

Virmach商家我们是不是比较熟悉?速度一般,但是人家价格低,而且机房是比较多的。早年的时候有帮助一个有做外贸也许需要多个机房且便宜服务商的时候接触到这个商家,有曾经帮助够买过上百台这样的低价机器。这里需要提醒的,便宜但是速度一般,尤其是中文业务速度确实不快,如果是外贸业务,那肯定是没有问题。这几天,我们有看到Virmach推出了夏季优惠促销,VPS首年8折,最低年付仅7.2美元,多机房可选,如...

sharktech:洛杉矶/丹佛/荷兰高防服务器;1G独享$70/10G共享$240/10G独享$800

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服...

野草云提供适合入门建站香港云服务器 年付138元起 3M带宽 2GB内存

野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...

控件开发为你推荐
可以访问违规网站的浏览器能否让UC浏览屏蔽掉这些骗子违法的网站域名,永久不能访问。免费erp免费的ERP哪家好用aftereffectpremiere pro与after effect的区别充值卡充值移动手机充值卡如何充值?第五人格抄袭有像第五人格那种游戏吗?wifi快速破解器电脑版电脑怎么破解wifi密码没有nvidia控制面板没有nvidia控制面板有什么用没有nvidia控制面板为什么我的电脑点击右键没有NVIDIA控制面板无线呼叫系统什么是无线呼叫器?网站维护收费网站建设及维护需要多少钱?
vps是什么 vps租用 godaddy续费优惠码 http500内部服务器错误 申请空间 qq数据库 天互数据 微信收钱 域名转向 vip购优汇 gspeed 1g内存 爱奇艺会员免费试用 新睿云 汤博乐 nnt 碳云 phpinfo reboot easypanel 更多