2008-10-02 2 views
1

Powerbuilder 9.0의 팝업 창에서 값 또는 구조를 어떻게 반환합니까? CloseWithReturn은 응답 창에만 유효하므로 사용할 수 없습니다. Message.PowerObjectParm에 값을 설정하면 팝업 창이 닫히면 값이 null이됩니다. 사용자가 호출자 창으로 돌아가서 행을 스크롤 할 수 있도록 팝업 창을 사용해야합니다.Powerbuilder 9.0의 팝업 창에서 사용자 지정 구조 반환

프로그램 흐름 : 1) 윈도우 OpenWithParm 2) 창 B는 3) 사용자 모두 윈도우 3) 이용자 4) 윈도우 B 창 (A)에 다시 구조를 통과 할 필요가 창 B를 폐쇄와 상호 현재 열려

답변

2

당신이 생각하는대로 이것을 수행 할 수 없습니다. 상위 창에서 여는 창은 응답 창이 아니기 때문에 둘은 명시 적으로 함께 링크되어 있지 않습니다.

그러나 부모 창에서 사용자 정의 구조 유형의 공용 인스턴스 변수를 사용하면이 작업을 수행 할 수 있습니다. 그런 다음 자식 창에서 당신이 그것을 닫기 전에, 명시 적으로 이런 일을 통해 부모 창에서 변수를 설정 : 만 인스턴스화 w_my_parent_window_name의 인스턴스가있을 것입니다 경우

w_my_parent_window_name.istr_my_structure = lstr_my_structure 

에만 수행해야합니다.

3

부모 제한에 대한 "한 인스턴스"는 팝업을 열 때 상위 창에 대한 참조를 전달하고 인스턴스 변수에 참조를 저장하여 전달할 수 있습니다. 이것은 또한 올바른 버전의 w_my_parent_window_name과 통신하고 있음을 보장합니다.

+0

팝업 창에 전달하는 구조에 호출 창에 대한 참조를 저장합니다. – nfootit

0

PFC를 사용하고 있다면 바로 사용할 수있는 서비스가 있다는 것을 기억하십시오.

0

Message.PowerObjectParm은 개체을 전달할 때 작동합니다. 팝업이 닫힐 때 NULL이되는 이유는 구조가 자동으로 초기화되고 자동으로 삭제되기 때문입니다. 그들은 선언 된 범위 내에서만 유효합니다. 예를 들어 함수 내에서 선언 된 경우 함수가 완료되면 파손됩니다. 팝업의 인스턴스 변수라면 닫을 때 팝업과 함께 파기됩니다.

Dougman이 제안한 것처럼 팝업을 닫기 전에 상위 창에서 같은 유형의 변수로 구조를 복사하거나 구조 대신 객체를 사용할 수 있습니다. 예 : 사용자 정의 객체를 만들고 구조의 변수처럼 public 인스턴스 변수를 선언하면됩니다.

물론 개체를 명시 적으로 만들고 파괴해야합니다. 팝업에 의해 생성 된 객체는 팝업 자체가 파기 된 후에도 명시 적으로 파기 될 때까지 인스턴스화 된 상태로 유지됩니다.

0

항상 여러 가지 방법으로 문제를 해결할 수 있습니다. 질문이 오래 되더라도 다른 것을 제안하겠습니다 ...

부모 창에서 맞춤 이벤트를 실행할 수 있습니다. 음, 기술적으로 부모 창에서 어떤 이벤트를 트리거 할 수 있지만이 이벤트에 대한 인수로 구조를 전달할 수 있도록 특별히 맞춤 이벤트를 만드는 것이 좋습니다.