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

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

香港云服务器最便宜价格是多少钱一个月、一年?

香港云服务器最便宜价格是多少钱一个月/一年?无论香港云服务器推出什么类型的配置和活动,价格都会一直吸引我们,那么就来说说香港最便宜的云服务器类型和香港最低的云服务器价格吧。香港云服务器最便宜最低价的价格是多少?香港云服务器只是服务器中最受欢迎的产品。香港云服务器有多种配置类型,如1核1G、2核2G、2核4G、8到16核32G等。这些配置可以满足大多数用户的需求,无论是电商站、视频还是游戏、小说等。...

捷锐数据399/年、60元/季 ,香港CN2云服务器 4H4G10M

捷锐数据官网商家介绍捷锐数据怎么样?捷锐数据好不好?捷锐数据是成立于2018年一家国人IDC商家,早期其主营虚拟主机CDN,现在主要有香港云服、国内物理机、腾讯轻量云代理、阿里轻量云代理,自营香港为CN2+BGP线路,采用KVM虚拟化而且单IP提供10G流量清洗并且免费配备天机盾可达到屏蔽UDP以及无视CC效果。这次捷锐数据给大家带来的活动是香港云促销,总共放量40台点击进入捷锐数据官网优惠活动内...

Hostiger 16G大内存特价VPS:伊斯坦布尔机房,1核50G SSD硬盘200Mbps带宽不限流量$59/年

国外主机测评昨天接到Hostigger(现Hostiger)商家邮件推送,称其又推出了一款特价大内存VPS,机房位于土耳其的亚欧交界城市伊斯坦布尔,核50G SSD硬盘200Mbps带宽不限月流量只要$59/年。 最近一次分享的促销信息还是5月底,当时商家推出的是同机房同配置的大内存VPS,价格是$59.99/年,不过内存只有10G,虽然同样是大内存,但想必这次商家给出16G,价格却是$59/年,...

控件开发为你推荐
bft请问BFT高级是什么水平的?初始化磁盘win7系统如何磁盘初始化?linux安装教程怎么装LINUX的系统....软件群发免费的加群群发软件?印度it印度IT业与中国IT业的差异?深度剖析!spinmaster会飞的小仙女玩具什么品牌比特币官方客户端如何查询比特币、莱特币确认 ?眼镜片品牌眼镜镜片什么品牌最好 什么材料最好移动硬盘提示格式化移动硬盘打不开,提示需要格式化移动硬盘提示格式化救命啊!移动硬盘一直提示让我格式化,里面有很多重要数据啊```
华众虚拟主机管理系统 cn域名备案 paypal认证 gomezpeer typecho 远程登陆工具 免费静态空间 香港新世界中心 上海服务器 免费网页申请 四核服务器 根服务器 万网主机管理 shuang12 独立主机 广州虚拟主机 沈阳idc godaddy中文 qq空间打开很慢 时间同步服务器 更多