国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

小探 Delphi8 for .net 的 VCL 類庫

2024-07-10 13:04:07
字體:
來源:轉載
供稿:網友
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開發工具。只看了一小會兒,有什么謬論,希望大家指出和原諒,我也會不斷地學習進步!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大悟县| 柳林县| 鞍山市| 嘉峪关市| 蒙山县| 晴隆县| 东明县| 河津市| 永州市| 嘉黎县| 保定市| 富锦市| 莱阳市| 许昌市| 宁阳县| 璧山县| 益阳市| 淮阳县| 乌鲁木齐县| 瑞丽市| 沙雅县| 时尚| 清镇市| 嘉定区| 新源县| 章丘市| 安多县| 阿瓦提县| 民勤县| 阿拉善左旗| 英吉沙县| 平遥县| 邮箱| 尼勒克县| 久治县| 民乐县| 黄浦区| 湖南省| 海伦市| 龙里县| 正定县|