六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

小探 Delphi8 for .net 的 VCL 類庫

[摘要]Borland工程師好辛苦啊!首先得感嘆這么一句! 前兩天,看了一篇Delphi8的介紹,于是下來一個裝上看看(可能是盜版的,不過我不會用于商業用途!),我使了5年的Delphi,從3到...
Borland工程師好辛苦啊!首先得感嘆這么一句!
前兩天,看了一篇Delphi8的介紹,于是下來一個裝上看看(可能是盜版的,不過我不會用于商業用途!),我使了5年的Delphi,從3到6,6以后就開始用.Net了。前段時間出了個C#Builder,興奮的裝上看了看,而已!
前段時間聽說Borland要推出"超級"的VCL Framework,著有興趣,因為總覺得microsoft不會真的推出For Linux的Framework,那么Mono更是遙遙無期(估計萬不得已,ms會花一些money收掉他)。
裝好Delphi8后,一啟動以為和C#Builder差不多(一樣啟動界面風格,現在我還不解那個黑灰的設計,預示著什么?),根據前面看到的Delphi8的介紹,一直對Vcl控件不能兼容.Net控件不解,探個究竟!見了一個Vcl Forms的工程一看,還傻不啦嘰相硬拖.Net控件,門都沒有!
還好,Vcl類庫是開放源碼的(跟了ms一段時間,這樣的習慣已經沒了),一看才知道怎么回事事兒!Vcl的控件都是從System.ComponentModel.Component寫下來的,怪不得與.Net控件不相容了。就拿TForm舉例,其是從:System.ComponentModel.Component —〉TComponent —〉TControl —〉TWinControl —〉TScrollingWinControl —〉TCustomForm一路過來的,當然和System.Windows.Forms.Control下的.Net控件不是一路貨了,TControl和Control分道揚鑣。不過還好從類庫的結構看上去,他們的組件還是可以兼容的,具體的就不一定了!
再看看Borland工程師寫的Vcl源碼,就好像開始說的那句話,好辛苦啊!既要完全兼容以前Delphi源碼,又要支持.Net,不能再像以前那樣無所忌憚的用API,用匯編,把System.Runtime.InteropServices.Marshal類用的個透熟!不知道還能不能跨平臺,估計在什么Linux上,這幫Borland工程師們又要“好辛苦”了。再寫一遍,反正我們比ms的men強,怕什么!
說了半天,兩邊的控件能不能互調,怎么互調啊?怎么讓TControl包含Control,讓Control包含TControl?
Delphi8安裝后,發現程序菜單中有一個WinForms Controls的導入工具,哇,趕緊試一下!轉了一個簡單的控件,自己寫的一個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中調用過ActiveX控件的朋友一定知道,在.Net調用ActiveX控件時,DotNet會自動生成一個包裝類,就像上面TImpRulerPanel一樣,只不過Com對象的包裝類是從AxHost繼承的,這里的包裝是從TNetControlWrapper繼承的,手法很相像。AxHose通過GetOcx或得Com控件,這里直接可以獲得,都是“一家”,自然要方便一些。我想將來,將Vcl控件包裝到.Net中使用也不是什么難事。

但是在轉換其他一些復雜一點的控件,比如包含自定義事件時,就會有一些問題,甚至產生莫名奇妙的錯誤,我會加強研究,在后來文章中的給大家介紹及其解決的方法。

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

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

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




主站蜘蛛池模板: 日韩色网站 | 欧美无遮挡国产欧美另类 | 日本欧美久久久久免费播放网 | 日本韩国在线视频 | 亚洲成人福利网站 | 日本亚洲高清 | 日本a在线观看 | 日韩视频导航 | 亚洲乱码一区二区三区国产精品 | 色涩综合| 日韩欧美中文字幕一区二区三区 | 四虎影院久久久 | 日日干日日射 | 色久综合网| 日韩欧美亚洲视频 | 青草视频入口 在线观看 | 欧美午夜不卡 | 青草免费在线观看 | 青草社区在线观看 | 午夜欧美视频 | 日本欧美国产精品 | 日韩视频专区 | 亚洲 欧美 中文字幕 | 欧美无人区码卡二卡3卡4免费 | 亚洲精品中文字幕乱码 | 婷婷激情六月 | 先锋影音国产精品 | 亚洲欧美一 | 三级国产在线 | 午夜老司机在线观看免费 | 亚洲欧美在线综合一区二区三区 | 日韩操片| 日本一区二区免费高清视频 | 亚洲首页成人有声小说网 | 五月天婷婷在线视频国产在线 | 四虎永久在线观看 | 三十极夜2免费视频 | 欧美性猛交一区二区三区 | 最近韩国高清免费 hd | 污污视频在线 | 深爱激情小说网 |