2010-04-02 14 views
2

PB 응용 프로그램에서 다소 오래 실행되는 저장 프로 시저가 호출되었습니다. UI가 처리 중임을 보여주기를 원하지만 정확한 진행 상황을 알지 못합니다. 즉, 그것이 10 % 또는 90 % 완료되었는지 말할 수 없습니다. 내가 아는 전부는 그것이 끝날 때입니다.PowerBuilder 불확정 진행률 막대

사용자에게 뭔가를 보여주기 위해 어딘가에 창에 "Inderterminate"(가로형) 진행률 표시 줄을 넣고 싶습니다. 내장 HProgressBar 컨트롤의 설명서를 살펴본 결과이 동작을 강제로 수행하는 방법을 알 수 없습니다.

내 컨트롤을 작성하거나 다른 컨트롤을 가져 오지 못하는데,이를 수행하는 방법이 있습니까?

답변

2

Powerbuilder에는이 작업을 수행하는 기본 제공 방법이 없지만 Win32 컨트롤을 사용할 수 있습니다. 이에 대한 좋은 기사가 여기 (진행률 표시 줄의 예를 포함!) :

그것은 이전 기사입니다하지만 여전히 파워 빌더의 새 버전에 적용됩니다.

0

다소 어려운 상황을 제어해야합니다. PowerBuilder는 멀티 스레드가 아니므로 저장 프로 시저가 실행 중일 때 응용 프로그램 UI를 제대로 업데이트 할 수 없습니다.

컨트롤이 반환되기 전에 작업이 완료 될 때까지 기다려야합니다.

과거에는 장기 실행 작업이 진행 중임을 보여주기 위해 애니메이션을 표시했습니다. 애니메이션 컨트롤을 사용하면 SP가 실행되는 동안 계속 재생됩니다.

+0

좋은 점을 제기하는 동안 PB가 멀티 스레드가 아니라는 것이 완전히 정확하지는 않습니다. SharedObjectRegister()를 사용하여 스레드를 만들 수 있으며 여기에 적용 할 수있는 Async DB Parm이 있습니다. 그러나 성능 영향의 가중치에 따라 OP는 주 스레드가 GUI를 실행하는 동안 검색을 수행하기 위해 스레드를 생성하려고 할 수 있습니다. 오버 헤드의 대부분이 데이터 전송에있는 경우 RetrieveRow를 사용하여 하나의 스레드에서 수행 할 수 있지만 성능에 영향을 미칩니다. – Terry