原創|其它|編輯:郝浩|2010-06-01 11:27:31.000|閱讀 2304 次
概述:在使用DevExpress 的Ribbon控件過程中,發現cxBarEditItem的屬性類型是可變的,并且難以確定。在界面上的顯示只不過是TextEdit, ComboBox之類的字符串,而實際對應的對象卻完全不是。本文將與你一起分享Ribbon控件如何確定cxBarEditItem的屬性類型。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在使用DevExpress 的Ribbon控件過程中,發現cxBarEditItem的屬性類型是可變的,并且難以確定。在界面上的顯示只不過是TextEdit, ComboBox之類的字符串,而實際對應的對象卻完全不是。要找出真實的對象名稱,還是需要花一定的功夫的。
下面就是找對象名稱的過程了,首先確保DevBar的Source目錄被配置在了Library Path中,因為我們需要不止一次的重新編譯控件,不能夠只配置dcu的目錄。然后,跟據屬性編輯器的特點,找到相應的RegisterPropertyEditor方法,搜一下就會在cxBarEditItemReg.pas這個文件里,找到一句代碼:
RegisterPropertyEditor(TypeInfo(TcxCustomEditProperties), TcxCustomBarEditItem,
'Properties', TcxBarEditItemPropertiesProperty);
從此代碼可以確定,properties屬性的編輯器就是TcxBarEditItemPropertiesProperty,然后按著Ctrl點一下這個類名,直接跳轉到了屬性編輯器的聲明部分。我們直接看SetValue()方法。
在里面找到了關鍵的一句代碼:
APropertiesClass := TcxCustomEditPropertiesClass(GetRegisteredEditProperties.FindByClassName(Value));
原來它的填充類是通過一個特定的工廠方法返回的,接著我們就能直接跟進去了,找到FindByClassName這個方法,打下斷點。然后運行程序,會看到這個方法被一次次的調用,而其中有一次,就是properties屬性調用的了。
在這里,我們無法確定哪一次才是Properties屬性調用的,而且由于Dev控件的復雜性,這個方法被反復調用多次。因此,我們略微的修改代碼,以滿足確定屬性的需要。
改動如下:
function TcxRegisteredClasses.FindByClassName(const AClassName: string): TClass;
var
I: Integer;
begin
Result := nil;
for I := 0 to Count - 1 do
begin
if Items[I].ClassName = AClassName then
begin
{$DEFINE DEBUG}
{$IFDEF DEBUG}
if items[i].InheritsFrom(TcxCustomEditProperties) then
begin
WriteLog(AClassName);
end;
{$ENDIF}
Result := Items[I];
Break;
end;
end;
end;
紅色的部分就是添加的代碼了,WriteLog是一個自定義函數,作用是往C盤根目錄下寫一個Log文件,文件的內容即繼承自TcxCustomEditProperties的類。
程序執行后,打開這個文本一看,就一目了然了。
上面的代碼用了編譯預處理,如果不需要寫文件,就把{$DEFINE DEBUG} 改成 {.$DEFINE DEBUG},如果下一次還需要做此工作,再改回來。
慧都科技作為Developer Express公司目前在中國唯一正式授權的經銷商,不僅為DXperience提供了全面的技術支持服務,同時還傾情打造 DevExpress for.net高級培訓以及DXperience Winform子控件培訓,讓您深入了解控件實現效果和常見問題的解決思路,提高開發效率。
另外,為了從根本上幫您解決數據快速錄入的問題,慧都控件網傾力打造了EVSolution QuickInput方案。它不僅支持全鍵盤操作,實現快速光標切換,而且還能進行聯想查詢、復雜數據搜索查詢等功能。另外它還提供了豐富而友好的用戶界面和用戶體驗,您可以根據需要,自動規范化格式,真正將Web軟件的優勢發揮得淋漓盡致!
據慧都科技透露,DevExpress旗下著名控件套包:DXperience™ Universal Subscription v2010 vol 1已經正式發布,該版本增加了眾多新的WPF和Silverlight控件的新功能到整個產品線。眾多新功能搶先體驗!請關注慧都控件網!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網