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

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

古德云香港cn2/美国cn235元/月起, gia云服务器,2核2G,40G系统盘+50G数据盘

古德云(goodkvm)怎么样?古德云是一家成立于2020年的商家,原名(锤子云),古德云主要出售VPS服务器、独立服务器。古德云主打产品是香港cn2弹性云及美西cn2云服务器,采用的是kvm虚拟化构架,硬盘Raid10。目前,古德云香港沙田cn2机房及美国五星级机房云服务器,2核2G,40G系统盘+50G数据盘,仅35元/月起,性价比较高,可以入手!点击进入:古德云goodkvm官方网站地址古德...

创梦网络-新上雅安电信200G防护值内死扛,无视CC攻击,E5 32核高配/32G内存/1TB SSD/100Mbps独享物理机,原价1299,年未上新促销6折,仅779.4/月,续费同价

创梦网络怎么样,创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以****,属于一手资源,高防机柜、大带宽、高防IP业务,另外创梦网络近期还会上线四川眉山联通、广东优化线路高防机柜,CN2专线相关业务。广东电信大带宽近期可以预约机柜了,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网...

racknerd:美国大硬盘服务器(双路e5-2640v2/64g内存/256gSSD+160T SAS)$389/月

racknerd在促销美国洛杉矶multacom数据中心的一款大硬盘服务器,用来做存储、数据备份等是非常划算的,而且线路还是针对亚洲有特别优化处理的。双路e5+64G内存,配一个256G的SSD做系统盘,160T SAS做数据盘,200T流量每个月,1Gbps带宽,5个IPv4,这一切才389美元...洛杉矶大硬盘服务器CPU:2 * e5-2640v2内存:64G(可扩展至128G,+$64)硬...

控件开发为你推荐
笛卡尔乘积笛卡尔积是什么意思?blastpblast 和bomb的区别ucosiiucosii操作系统能运行什么软件cs躲猫猫CS1.6捉迷藏具体的玩法?数据管理制度网络管理制度.碰撞球两小球碰撞冲量怎么计算印度it印度的IT业spinmaster街球名人都有哪些spinmaster技术滑板截图方法程序员段子20、老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序
最好的虚拟主机 中文域名交易中心 骨干网 oneasiahost Vultr 美国主机推荐 美国主机评论 l5520 美国仿牌空间 表格样式 unsplash 12306抢票助手 双11秒杀 河南移动m值兑换 上海服务器 网购分享 php服务器 lamp是什么意思 摩尔庄园注册 金主 更多