2011-05-17 45 views
11

我使用一個將線句柄作爲輸入參數的類擴展到其構造函數的行對象的功能。然後,該類將創建一個WindowMouseMotion偵聽器,以檢測鼠標懸停在突出顯示該行的行上,並顯示一個包含用於設置某些行/數據屬性的控件的面板。這很好。是否可以通過繼承擴展圖形對象的功能?

我現在試圖通過偵聽該行的ObjectBeingDestroyed事件來使該類檢測並響應正在刪除的行。我的問題是,通過存儲行的句柄將這個類鏈接到行對象是否是最好的解決方案是否可以通過繼承它來擴展行類?我查看了MATLAB文檔並在線搜索,但無法找到有關從圖形類繼承的確切信息。

+0

這是一個非常詳細的,你可能不會很快看到答案。 [你可能想問問Mathworks這一個](http://www.mathworks.com/matlabcentral/answers/?s_cid=HP_FR_answers)。 – 2011-05-18 20:09:03

+0

@Chris A. - 感謝您的鏈接。我知道MATLAB中央新聞組,但我不知何故錯過了答案部分。這裏是我的帖子的鏈接:http://www.mathworks.com/matlabcentral/answers/7737-is-it-possible-to-extend-graphics-objects-functionality-through-inheritance – 2011-05-18 20:45:39

+0

喜歡構成過度繼承: http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance – Mikhail 2011-05-26 19:44:51

回答

2

可以對內置句柄圖形類進行子類化。有一個例子在http://undocumentedmatlab.com/blog/udd-properties/。它使用特定的無證UDD機制。 MathWorks多次聲明,UDD僅用於內部開發,僅供使用且不受支持。但值得注意的是,The MathWorks提供的m代碼中有很多UDD子類的例子。另外,如果他們覺得有一個特定的理由來保密UDD的祕密,它可以是內置的或pcoded。所以我覺得如果你找到了如何在The MathWorks提供的源代碼中做事情的例子,你應該可以隨意使用它們。

1

得到此回覆在MATLAB Central Answers「沒有從(/子類)處理圖形對象繼承文檔的方式。我想規則是,如果你不能在文檔中找到它,它不被支持。

有人建議可以擴展新的HG2類here但這不是官方的Mathworks信息。

+1

您確實可以收聽該行的ObjectBeingDestroyed事件。這是Matlab在其代碼中多次執行的內容(例如,看看javacomponent.m)。 也許一個簡單的方法是簡單地在行的DeleteFcn屬性中設置回調函數。 – 2011-09-08 10:54:47