Delphi D10.X VCL和FireMonkey之間的常見差異介紹
VCL與FireMonkey不相容
這裡介紹他們的差異主要是幫助已熟悉VCL的朋友可以快速的瞭解控制元件使用上的不同,快速的轉變到FireMonkey的開發思路上來。
- 警告:
FireMonkey與VCL本質上是完全不同的,FireMonkey(FMX)和可視元件庫(VCL)不相容,因此不應在同一模組中一起使用。
也就是說,一個模組應該是FireMonkey或VCL之一。不相容是由FireMonkey(FMX)和VCL之間的框架差異引起的。
您可以:
- 如適用於macOS的共享庫中所述,將FireMonkey庫與VCL應用程式一起使用,或將VCL庫與FireMonkey應用程式一起使用。
- 瞭解將VCL應用程式轉換為FireMonkey的一般準則,然後做遷移。
- 瞭解一般操作,再遷移VCL應用到FireMonkey。
- 在http://www.midaconverter.com/上獲取VCL-to-FireMonkey轉換器程式。可以自動遷移VCL應用FireMonkey的某些方面。
RAD Studio提供了三個主要的庫:
FireMonkey(FMX)是一個視覺元件庫,具有複雜的圖形,動畫和樣式功能。您可以為任何受支援的目標平臺建立FireMonkey應用程式。
視覺元件庫(VCL) 是僅在Windows(在Win32和Win64應用程式中)支援的視覺元件的物件層次結構。
執行時庫(RTL) 是Delphi和C ++為任何受支援的目標平臺共享的過程庫。RTL由 System, System.SysUtils, System.IOUtils和 System.Classes單元的成員組成。
您可以在FireMonkey應用程式中自由使用RTL,但不能在FireMonkey應用程式模組中直接使用VCL。
FireMonkey與VCL的差異
Actions
與VCL操作不同,FireMonkey操作不支援操作管理器。因此,您不能使用VCL Action Manager編輯器來管理FireMonkey操作。
複選框
在FireMonkey中,複選框應使用OnChange事件而不是OnClick對已選中狀態的更改做出反應。是否選中的狀態屬性是 IsChecked,VCL中使用的是Checked。
控制元件的父子關係
在VCL中,只能通過TForms,TFrames,TPanels和Data Modules作為其他元件的父物件。在FireMonkey中,您可以將任何物件作為其他物件的父物件,並且可以在“ 結構檢視”中輕鬆建立此關係。
控制元件間的關係顯得更多樣,從而可以完成多樣化組合使用,這是非常大的進步。
(可參閱我另一篇部落格介紹:Delphi D10.X 移動開發中APP介面基本佈局(二))
顏色
除RGB外,FireMonkey顏色還具有alpha(不透明度)成分。顏色由系統型別TAlphaColor和TAlphaColorRec表示。FireMonkey使用System.UIConsts單元中的顏色常量。這些顏色常量的字首為“ cla”而不是“ cl”。
控制定位
在VCL中,控制元件的位置由其頂部和左側屬性表示。
在FireMonkey中,控制元件使用具有巢狀X和Y屬性的TPosition型別的Position。3D控制元件的Position屬性是TPosition3D的一個例項,帶有一個附加的Z座標。對於大小,FireMonkey使用寬度和高度(對於3D控制元件使用深度)。
(可參閱我另一篇部落格介紹:Delphi D10.X 移動開發中APP介面基本佈局(二))
資料庫表格事件
VCL的事件OnDrawDataCell或OnDrawColumnCell可以使用FireMonkey中的TStringGrid與LiveBindings替換。
在FireMonkey不使用VCL那樣的DB顯示控制元件,而FireMonkey中幾乎所有的控制元件都可以使用LiveBindings來繫結資料,包括是否顯示、禁用某控制元件都可以直接繫結,並由資料內容直接控制,從而完全不需要編寫程式碼處理。
顯示文字
FireMonkey標籤中顯示的文字的屬性是Text,不是Caption。
字型大小
在VCL中,字型大小以點表示,每英寸72個點。
在FireMonkey中,字型大小以與裝置無關的畫素(DIP)表示,每英寸96畫素。
因此,在FireMonkey中使用相同Font.Size的設定,顯示出來的文字會感覺較小。
Masked編輯
VCL中的TMaskEdit或TEDIT在FireMonkey中使用來TEDIT和Password 屬性來處理。將TEDIT中Password 屬性設定為True,使此編輯控制元件隱藏其字元,以進行類似密碼的輸入。將Password 設定為False可使此編輯控制元件顯示其所有字元。
單選按鈕和組
要將VCL TRadioGroup轉換為FireMonkey,可以使用TPanel或TGroupBox。
注:在FireMonkey,TPanel不支援專案單選按鈕。
每個VCL TGroupBox中的單選按鈕都是獨立的。如果將多個VCL TGroupBox轉換為FireMonkey TGroupBox,則包含的單選按鈕將相互關聯(一個組中的選擇將清除其他組中的選擇)。要在FireMonkey中恢復獨立性,需要為每個轉換的TRadioButton手動指定GroupName屬性。
相關或類似文章
1、Delphi D10.3 LayoutsPro 控制元件簡介 -避免輸入焦點被虛擬鍵盤遮擋
推薦到這裡,不是因為控制元件,是因為這個DEMO裡有較多的可用於介面佈局學習的內容,可直觀的瞭解VCL與FireMonkey的差異;
2、Delphi D10.1 移動開發中APP介面基本佈局(一)
3、Delphi D10.X 移動開發中APP介面基本佈局(二)
與本部落格內容有相關更詳細描述。