RTTI가 있는줄은 알고 있었지만 사용해보니 정말 멋지네요.
2010 빌더에서 사용했는데
xml파일에 아래와 같이 저장했다가
<Project>
<EditRepository>
<TcxEditRepositoryMemoItem>
<Name>RepDescriptMemoItem</Name>
</TcxEditRepositoryMemoItem>
<TcxEditRepositoryProgressBar>
<Name>RepPorgressBarItem</Name>
</TcxEditRepositoryProgressBar>
</EditRepository>
<TcxCategoryRow>
<Height>-1</Height>
<Properties>
<Caption>General</Caption>
</Properties>
<ChildRow>
<TcxEditorRow>
<Properties>
<Caption>Project Name</Caption>
<Value>테스트 프로젝트</Value>
</Properties>
</TcxEditorRow>
<TcxEditorRow>
<Properties>
<Caption>Company</Caption>
<Value>회사이름</Value>
</Properties>
</TcxEditorRow>
<TcxEditorRow>
<Properties>
<Caption>Worker</Caption>
<Value>홍길동</Value>
<RepositoryItem></RepositoryItem>
</Properties>
</TcxEditorRow>
<TcxEditorRow>
<Properties>
<Caption>Description</Caption>
<Value>프로젝트 테스트</Value>
<RepositoryItem>RepDescriptMemoItem</RepositoryItem>
</Properties>
<Height>150</Height>
</TcxEditorRow>
</ChildRow>
</TcxCategoryRow>
</Project>
이 정보들을 런타임시에 DevExpress의 VerGrid에 로딩할수 있으니 너무너무 좋은거 같습니다.
아직 완벽하게 RTTI로만 이용한건 아니지만...그래도 저번에 Lua스크립트를 알고 난 이후로
또 하나의 세계가 열리는군요.
간단하게 RTTI 테스트 하자면,
SetPropValue(Form1, "Caption", "Test");
이런식으로...
|
TcxCustomRow* row;
row = (TcxEditorRow*)VerticalGrid->Add(__classid(TcxEditorRow));
row->Properties->Caption = "Test";
row->Properties->Value = "테스트";