2012-03-12 18 views
3

可能重複:
How to invoke a property editor at design time在非可視組件雙擊

我創建一個非可視化組件,我希望用戶能夠雙擊在設計時在我的組件上打開一個設計時編輯器。

我該怎麼辦?

+0

@David也許他正在試圖創建一個「全局」甚至處理程序持有者,如:一個組件擁有相同的「雙擊」事件處理程序的各種可視化組件,所以他可能想有能力設置它在一個非可視然後像做「applyto([按鈕1,按鈕2,按鈕3,panel5])」,可能是錯誤的,但如果我是正確的,「Astervista」考慮不同的方法。 – ComputerSaysNo 2012-03-12 14:01:43

+0

我的意思是在設計時雙擊。 – Astervista 2012-03-12 14:02:32

+0

我想是在設計時 – Astervista 2012-03-12 14:05:56

回答

4

雙擊一個組件在設計時調用組件編輯。默認的組件編輯器是查找具有特定名稱的事件屬性併爲其發現的處理程序創建的。你可以編寫你自己的組件編輯器來做任何你想要的。

創建TComponentEditor的後裔(來自設計編輯器單元)並覆蓋Edit方法以處理雙擊。您也可以覆蓋GetVerbCountGetVerbExecuteVerb方法上下文菜單項添加到您的組件。要獲取編輯器被要求編輯的組件的引用,請檢查Component屬性。如果您的編輯器修改組件,請致電Designer.Modified

告訴你的編輯器應該與你的組件在你的Register過程調用RegisterComponentEditor(從DesignIntf​​)中使用的IDE。

您應該將此代碼放入設計時包,與組件代碼分開。將您的運行時軟件包放在設計時軟件包的「需求」列表中。如果你把所有東西都放在一個包裏,那麼你的組件的用戶將不能在他們的項目中使用運行時包;他們不允許分發您的設計時包的依賴關係,這些包僅供IDE使用。

+0

在JEDI JVCL代碼庫中有這樣的例子。例如,我最近爲'TJvCsvDataSet'重新實現了這樣的事情。 – 2012-03-12 20:00:21