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

控件开发  时间: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页面自身独立,因此最终用户能够直接访问它,对于用户控件则不是这样。

HostYun:联通AS9929线路,最低月付18元起,最高500Mbps带宽,洛杉矶机房

最近AS9929线路比较火,联通A网,对标电信CN2,HostYun也推出了走联通AS9929线路的VPS主机,基于KVM架构,开设在洛杉矶机房,采用SSD硬盘,分为入门和高带宽型,最高提供500Mbps带宽,可使用9折优惠码,最低每月仅18元起。这是一家成立于2008年的VPS主机品牌,原主机分享组织(hostshare.cn),商家以提供低端廉价VPS产品而广为人知,是小成本投入学习练手首选。...

弘速云20.8元/月 ,香港云服务器 2核 1g 10M

弘速云元旦活动本公司所销售的弹性云服务器、虚拟专用服务器(VPS)、虚拟主机等涉及网站接入服务的云产品由具备相关资质的第三方合作服务商提供官方网站:https://www.hosuyun.com公司名:弘速科技有限公司香港沙田直营机房采用CTGNET高速回国线路弹性款8折起优惠码:hosu1-1 测试ip:69.165.77.50​地区CPU内存硬盘带宽价格购买地址香港沙田2-8核1-16G20-...

Contabo美国独立日促销,独立服7月€3.99/月

Contabo自4月份在新加坡增设数据中心以后,这才短短的过去不到3个月,现在同时新增了美国纽约和西雅图数据中心。可见Contabo加速了全球布局,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。为了庆祝美国独立日和新增数据中心,自7月4日开始,购买美国地区的VPS、VDS和独立服务器均免设置费。Contabo是德国的老牌服务商,...

控件开发为你推荐
x77论坛"0x00000008"指令引用的"0x00000008"内存.该内存不能为"read"战棋类最好玩的战棋类网页游戏是什么 要可以自己控制的战棋类求几类大型好玩的战棋游戏?充值卡充值买完充值卡了,怎么充值微信红包封面11位兑换码微信红包兑换码怎么用java商城javaweb 网上商城项目适合什么程度的学生做没有nvidia控制面板为什么我的电脑点击右键没有NVIDIA控制面板it之家论坛正版微软系统才能免费升级到Windows 10?delphi2007delphi 7和delphi 2007中查找哪些地方调用了某个函数外贸信息外贸新手,怎么从免费网站找到有效国外客户信息
工信部域名备案系统 高防dns winscp patcha 空间服务商 小米数据库 智能骨干网 美国十次啦服务器 免费个人空间申请 工作站服务器 cdn联盟 183是联通还是移动 如何用qq邮箱发邮件 支付宝扫码领红包 免费网页空间 Updog 服务器硬件防火墙 联通网站 阿里云免费邮箱 lamp是什么意思 更多