2010-02-28 71 views
3

我製作了幾個程序,我在網頁上以免費軟件的形式發佈。其中一個程序使用TSpinEdit進行一些數字輸入。它工作得很好,所以我沒有任何理由使用其他任何東西。自定義組件 - 如何管理?

然而,昨天,一位用戶告訴我他不喜歡這些按鈕有多小。我不能不同意,因爲他們是。不幸的是,讓按鈕變大的唯一方法就是讓控制更大,而且看起來不太好。相反,我決定稍微改變一下組件,以便按鈕彼此相鄰,而不是彼此重疊。

現在,Delphi不會讓我直接在DFM中包含這個新組件,因爲它目前沒有安裝 - 它只是一個添加到項目中的文件。很明顯,改變這一點會很好 - 不僅僅是因爲它讓我可以將控件保存在DFM中,還因爲它可以讓我更容易地重用已更改的組件 - 所以我必須創建一個包並添加它去那裏。沒關係,我可以做到這一點。

但是,這使我想到我的問題:我應該如何管理這個包?

添加我對同一個軟件包做出的其他任何組件是否有任何問題,或者對我來說製作多個軟件包並將它們分成邏輯組會更好?

我使用版本控制,當然,因此,在我的桌面和我的筆記本電腦之間傳播組件代碼的改變不是問題 - 但是我需要在每次更改時在每個工作站上手動重建軟件包,或者有沒有我應該使用的技巧?

回答

2

我有幾個「我的」組件分組在一個包中。在包選項中設置「根據需要重建」。至少在我的情況下(我正在使用SVN在家用電腦和筆記本上開發應用程序) - 它在項目編譯期間重新編譯包,但它是運行時包(共享包;用於應用程序和它的插件)。我不知道如何設計時間,恐怕你必須手動重新安裝它們,每次你改變一些東西...

或者,如果使用相同的delphi版本,爲什麼不把二進制文件(.bpl,.dcp)在共享(版本)的文件夾?

+0

儘管我可以將BPL添加到我的SVN存儲庫,但我真的不喜歡在版本控制中放置二進制文件。這感覺像是一個非常糟糕的黑客攻擊,並且有一個更好的方法來處理這個問題。 – 2010-02-28 22:12:49

+0

問題是你必須在運行delphi之前更新二進制文件......也許某種build-when-updated鉤子?我不確定TortoiseSVN/SVNClient是否允許掛鉤腳本... – migajek 2010-02-28 22:29:13

+0

我並不特別介意在啓動Delphi之前更新我的工作副本 - 我沒有將SVN與Delphi集成,所以我會這樣做無論如何。 TortoiseSVN *支持客戶端掛鉤腳本,因此可以通過強制重建來解決問題。我只需要將組件安裝到IDE中並在每臺機器上設置連接。這當然是可以做到的,而且我會更喜歡這樣做,但似乎應該有更好的方式 - 即使我覺得沒有。 – 2010-02-28 23:14:22

0

我們有許多不同的應用程序,這些應用程序使用稍微不同的組件集合構建。

我們創建了一個項目組,包括應用程序使用的主應用程序和所有組件(除了標準的Delphi應用程序以外)。我們在應用程序文件夾下有一個文件夾,用於存儲所有組件的源文件。組件文件夾通常在源代碼管理系統中共享以避免重複,但可以根據需要進行分支。

我們總是創建快捷方式來啓動爲我們正在使用的特定應用程序(使用-r命令行標誌)配置的Delphi。

所有這一切意味着我們可以創建一個包含發佈時組件的發佈分支,並且我們可以運行多個Delphi實例,每個實例都配置爲使用正確工作的組件版本。

如果您採取這種方法,您必須爲每個Delphi實例創建單獨的BPL/DCP輸出目錄,並確保從搜索路徑中刪除默認的BPL目錄。

0

一個軟件包cs多個軟件包:它歸結爲您如何分發軟件。爲多個組件提供多個包允許您更好地控制需要分發的內容(以o源代碼或運行時包的形式)。對於開發者來說,擁有一個更大的軟件包會更容易:只需要一個大型軟件包即可進行更改。

對於我的組件我選擇使用多個包;我現在後悔我的決定,但現在改變已經太遲了。當我需要建立一個新的工作站時,我需要弄清楚需要包括哪些軟件包以及需要編譯的順序。如果我只使用了一個大包,我只需從版本控制(我使用JEDI)和BUILD中取出軟件包,就是這樣。大包對我來說工作得很好,因爲我不分發源文件,也不分發運行時包。

+0

安裝了所有軟件包的.BPG(現在包含在新的Delphis中的.groupproj)文件允許您執行Build All,只需從註冊設計時軟件包進行安裝即可。你可以將它包含在版本控制中。 – 2011-06-29 19:44:04

2

我該如何管理這個包?

您可以將任何組件添加到您的軟件包中,然後安裝該軟件包將所有這些自定義組件安裝到Delphi IDE中。

包可能是運行時,設計時或兩者兼而有之。運行時軟件包沒有IDE交互,並且不會在IDE中安裝。運行時包提供運行時其他包使用的例程和類。設計時包是與IDE交互的包。

通常,您僅使用僅包含designtime的包來安裝IDE專家或屬性編輯器。其實任何只與IDE交互的東西,都與編譯的文件無關。

既是運行時又是設計時的軟件包是通常添加組件的軟件包,並將它們安裝到IDE中。這些軟件包與IDE交互,但也被編譯到生成的文件中。

因此,如果您的組件組將使用一些支持例程和類,則可以將它們放入運行時包中,並將該包用作其他包的必需包。

如果您有一些自定義IDE的代碼,或者向IDE添加了一些功能,請將它們置於僅限designtime的程序包中。

如果您的組件已經在您的編譯應用程序中使用,那麼您可以將它們放入運行時和設計時包中。

我使用版本控制,當然,這樣 傳播我的桌面之間改變組件代碼 和我的筆記本電腦是不是 一個問題 - 但我會需要手動重建各 每個工作站上 包時間我做了一個 更改,或者是否有一招我應該使用 ?

如果您在筆記本電腦和PC中使用相同版本的Delphi,那麼在更改源代碼後,您必須重新編譯軟件包至少一次以爲您的軟件包創建編譯後的BPL文件。一旦BPL文件被編譯,你可以將它複製到另一臺機器上(存儲BPL文件的文件夾。默認情況下,在Delphi 2010中,它是C:\ Users \ Public \ Documents \ RAD Studio \ 7.0 \ Bpl) ,將DCU文件複製到該機器,然後在該機器上運行Delphi IDE。 Delphi IDE會自動爲你加載新建的BPL文件。因此,簡而言之,如果所有機器都使用相同版本的Delphi編譯器,那麼您可以編譯一次包,並在其他機器上使用編譯包而不重建包。

相關問題