The ClassDefinition Object Or how to create a simple object browser - Part 1
The ClassDefinition Object Or how to create a simple object browser - Part 2
ClassDefinition의 Help를 찾아보니 Ancestor속성과 Name속성을 이용하면 부모윈도우의 이름을 알 수 있을 것 같았죠. 그래서 아래와 같은 코드로 부모윈도우의 윈도우 함수를 콜하는 로직을 구성하였습니다.
1: w_model_window lw_ancestor
2: graphicobject lgo_temp
3: window lw_temp
4: ClassDefinition cdf_child, cdf_ancestor
5:
6: lgo_temp = Parent
7:
8: // 가장 밖에 있는 윈도우 오브젝트를 찾는다.
9: // Tab이 있는 경우 Parent는 Tab이 되므로 상위 윈도를 찾기 위해 루핑
10: DO WHILE lgo_temp.Typeof() <> window!
11: lgo_temp = lgo_temp.GetParent()
12: LOOP
13: lw_temp = lgo_temp
14:
15: // 현재 UserObject가 있는 윈도우의 ClassDefinition 속성을 가져온다.
16: cdf_child = lw_temp.ClassDefinition
17: // 윈도우의 ClassDefinition.Ancestor 속성값이 부모 윈도우의 ClassDefinition.
18: cdf_ancestor = cdf_child.Ancestor
19:
20: // ClassDefinition.Ancestor가 Null이면 상속받은게 아니라 기본 컴포넌트로 만든 것임
21: IF IsNull(cdf_ancestor) THEN
22: Return 0
23: // 부모 윈도우의 ClassDefinition.Name 속성이 부모 윈도우의 이름.
24: ELSEIF cdf_ancestor.Name = 'w_model_window' THEN
25: // 부모윈도우 변수에 Assign
26: lw_ancestor = lw_temp
27: // 여기서 부모 윈도우의 함수를 콜할수 있다.
28: lw_ancestor.wf_부모함수명()
29: END IF
이렇게 하면 이 UserObject는 부모윈도우를 상속받은 오브젝트이던 그렇지 않던 모두 사용할 수가 있는 것이죠.
'관심꺼리.log > 정신노동.dat' 카테고리의 다른 글
블로그 도메인 주소 변경시 자동 이동처리 팁 (1) | 2009.05.06 |
---|---|
MSDN검색 쉽게 하기 - IE의 비주얼 검색 기능 이용 (0) | 2009.05.06 |
SyntaxHighlighter 테스트 (0) | 2009.04.29 |
파워빌더 기본 함수 (0) | 2008.09.30 |
파워빌더 화면 리사이즈 Tip (2) | 2008.09.26 |
파워빌더 Datawindow 페이지단위 스크롤 처리 Tip (0) | 2008.04.30 |