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

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

香港E3-1230v2 16GB 30M 326元/月 数脉科技

官方网站:https://www.shuhost.com/公司名:LucidaCloud Limited尊敬的新老客户:艰难的2021年即将结束,年终辞旧迎新之际,我们准备了持续优惠、及首月优惠,为中小企业及个人客户降低IT业务成本。我们将持续努力提供给客户更好的品质与服务,在新的一年期待与您有美好的合作。# 下列价钱首月八折优惠码: 20211280OFF (每客户限用1次) * 自助购买可复制...

VinaHost,越南vps,国内延时100MS;不限流量100Mbps

vinahost怎么样?vinahost是一家越南的主机商家,至今已经成13年了,企业运营,老牌商家,销售VPS、虚拟主机、域名、邮箱、独立服务器等,机房全部在越南,有Viettle和VNPT两个机房,其中VNPT机房中三网直连国内的机房,他家的产品优势就是100Mbps不限流量。目前,VinaHost商家发布了新的优惠,购买虚拟主机、邮箱、云服务器、VPS超过三个月都有赠送相应的时长,最高送半年...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

控件开发为你推荐
extractdataxp3文件怎么打开怎样进入观看?色温图一张色温准确的照片的基本标准是什么?rs485协议“485通信协议”是什么?微信收费微信平台是否要收费如何收费spinmaster会飞的小仙女玩具什么品牌空间图片QQ空间图片wifi快速破解器电脑版wifi密码破解破解器怎么快速破解密码没有nvidia控制面板没有nvidia控制面板怎么切换显卡网站维护收费网站建设及维护需要多少钱?3d规则3d中奖规则
免费网站空间申请 四川虚拟主机 域名注册godaddy 长沙域名注册公司 太原域名注册 日本vps 域名服务器是什么 主机屋 174.127.195.202 正版win8.1升级win10 tightvnc 免费网站申请 免费mysql 谁的qq空间最好看 idc资讯 lol台服官网 腾讯实名认证中心 cn3 湖南idc 石家庄服务器托管 更多