日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

小探 Delphi8 for .net 的 VCL 類庫

小探 Delphi8 for .net 的 VCL 類庫

更新時(shí)間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Borland工程師好辛苦啊!首先得感嘆這么一句!
前兩天,看了一篇Delphi8的介紹,于是下來一個(gè)裝上看看(可能是盜版的,不過我不會用于商業(yè)用途!),我使了5年的Delphi,從3到6,6以后就開始用.Net了。前段時(shí)間出了個(gè)C#Builder,興奮的裝上看了看,而已!
前段時(shí)間聽說Borland要推出"超級"的VCL Framework,著有興趣,因?yàn)榭傆X得microsoft不會真的推出For Linux的Framework,那么Mono更是遙遙無期(估計(jì)萬不得已,ms會花一些money收掉他)。
裝好Delphi8后,一啟動(dòng)以為和C#Builder差不多(一樣啟動(dòng)界面風(fēng)格,現(xiàn)在我還不解那個(gè)黑灰的設(shè)計(jì),預(yù)示著什么?),根據(jù)前面看到的Delphi8的介紹,一直對Vcl控件不能兼容.Net控件不解,探個(gè)究竟!見了一個(gè)Vcl Forms的工程一看,還傻不啦嘰相硬拖.Net控件,門都沒有!
還好,Vcl類庫是開放源碼的(跟了ms一段時(shí)間,這樣的習(xí)慣已經(jīng)沒了),一看才知道怎么回事事兒!Vcl的控件都是從System.ComponentModel.Component寫下來的,怪不得與.Net控件不相容了。就拿TForm舉例,其是從:System.ComponentModel.Component —〉TComponent —〉TControl —〉TWinControl —〉TScrollingWinControl —〉TCustomForm一路過來的,當(dāng)然和System.Windows.Forms.Control下的.Net控件不是一路貨了,TControl和Control分道揚(yáng)鑣。不過還好從類庫的結(jié)構(gòu)看上去,他們的組件還是可以兼容的,具體的就不一定了!
再看看Borland工程師寫的Vcl源碼,就好像開始說的那句話,好辛苦啊!既要完全兼容以前Delphi源碼,又要支持.Net,不能再像以前那樣無所忌憚的用API,用匯編,把System.Runtime.InteropServices.Marshal類用的個(gè)透熟!不知道還能不能跨平臺,估計(jì)在什么Linux上,這幫Borland工程師們又要“好辛苦”了。再寫一遍,反正我們比ms的men強(qiáng),怕什么!
說了半天,兩邊的控件能不能互調(diào),怎么互調(diào)啊?怎么讓TControl包含Control,讓Control包含TControl?
Delphi8安裝后,發(fā)現(xiàn)程序菜單中有一個(gè)WinForms Controls的導(dǎo)入工具,哇,趕緊試一下!轉(zhuǎn)了一個(gè)簡單的控件,自己寫的一個(gè)Button,沒問題,工作的很好!先來看看怎么完成的:
TImpRulerPanel = class(TNetControlWrapper)

private
function GetRulerPanel: Hose.WinForm.RulerPanel;
protected
procedure InitControlData; override;
procedure HookNetEvents(AControl: System.Windows.Forms.Control); override;
procedure UnhookNetEvents(AControl: System.Windows.Forms.Control); override;

public
property RulerPanel: Hose.WinForm.RulerPanel read GetRulerPanel;

(我刪除了不必要的部分)

在.net中調(diào)用過ActiveX控件的朋友一定知道,在.Net調(diào)用ActiveX控件時(shí),DotNet會自動(dòng)生成一個(gè)包裝類,就像上面TImpRulerPanel一樣,只不過Com對象的包裝類是從AxHost繼承的,這里的包裝是從TNetControlWrapper繼承的,手法很相像。AxHose通過GetOcx或得Com控件,這里直接可以獲得,都是“一家”,自然要方便一些。我想將來,將Vcl控件包裝到.Net中使用也不是什么難事。

但是在轉(zhuǎn)換其他一些復(fù)雜一點(diǎn)的控件,比如包含自定義事件時(shí),就會有一些問題,甚至產(chǎn)生莫名奇妙的錯(cuò)誤,我會加強(qiáng)研究,在后來文章中的給大家介紹及其解決的方法。

現(xiàn)在用.Net IDE開發(fā)的同志我不推薦使用Delphi for .net,但現(xiàn)在使用老版本Delphi的同志,我強(qiáng)烈推薦。既可以保留Delphi的一些工程、編程習(xí)慣,又可以逐步過渡到.Net,使用.Net類庫的強(qiáng)大功能,真是魚和熊掌可以兼得阿,只是目前的界面控件的兼容上稍差一點(diǎn)。

另外Delphi8也比老版本的Delphi有一些其他方面的小進(jìn)步,比如以前在編譯時(shí)無法檢驗(yàn)含有虛方法的類,現(xiàn)在則可以等。

總的來說,Delphi8還是非常值得使用.Net開發(fā)工具。只看了一小會兒,有什么謬論,希望大家指出和原諒,我也會不斷地學(xué)習(xí)進(jìn)步!

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 欧美日韩视频二区三区 | 久久伊人精品一区二区三区 | 国产精品亚洲一区二区三区久久 | 免费公开在线视频 | 欧美aaaaaabbbbb | 人人干天天操 | 在线成人精品国产区免费 | 99精品国产高清一区二区三区香蕉 | 99pao在线视频精品免费 | 久久免费视频2 | 天天色天天舔 | 成人免费网站在线观看 | 欧美国产一区视频在线观看 | 久久96国产精品 | 午夜久久视频 | 婷婷色视频 | 国产欧美日韩图片一区二区 | 国产高清天干天天视频 | 国产精品第44页 | 114毛片免费观看网站 | 国产亚洲欧美日韩国产片 | 天天看片天天干 | 国产成人免费网站在线观看 | 美女教师在办公室做爰网站 | 久久精品视频一区 | 香港aa三级久久三级不卡 | 国产成+人+综合+亚洲不卡 | 午夜视频免费国产在线 | 亚洲影院在线播放 | 日本视频中文字幕一区二区 | 久久综合九色综合狠狠97 | 人人爽人人爽人人片c | 久久精品亚洲欧美日韩久久 | 综合久久一区二区三区 | 伊人影院久久 | 日本中文字幕不卡免费视频 | 欧美日韩成人 | 免费的黄视频 | 国产精品久久久久影院 | 久久久网站亚洲第一 | 久色视频在线观看 |