2010-03-25 9 views
1

한 번 창에 임베드 된 시각적 사용자 개체를 다른 창 (동일 패키지)의 동적으로 생성 된 시각적 사용자 개체로 변환하려고합니다.Powerbuilder에서 사용자 개체의 배열을 만드는 방법은 무엇입니까?

내가 얻는 문제는 null 참조를 얻지 않거나 같은 개체를 반복해서 사용하지 않고 이러한 개체의 배열을 만들 수없는 것 같습니다.

long ll_count 
ll_count = UpperBound(iuo_backorders[]) 
iuo_backorders[ll_count+1] = uo_backorder  
lb_ok = iuo_backorders[ll_count+1].init('w_backorder_popup', '', '', '', 'd_backorder_popup', sqlca, useTransObj()) 

이 몇번이고 동일한 uo_backorder 재사용 : 사용자가 새로운 배열 요소를 필요로하는 순간

.

사용 : iuo_backorders[ll_count+1] = create uo_backorder은 null 개체 참조를 반환합니다.

사용자 개체가 다른 창 (내 생각)에 포함되어 있으므로 uo_ 명령을 PBL의 자체 파일로 이동해야하는지, 아니면 어떻게 든 참조를 변경해야합니다 (새 창은 그

모든 기능은 uo_ 이미) uo_에 해당하는 방법을 원래의 아이,하지만 확신은, 난 그냥 동적으로 시각적 인 사용자를 만드는 방법)

을 작동 할 수 있어야합니다 오브젝트

b)h 그런 다음 이러한 객체의 배열을 만듭니다.

답변

1

시각적 개체를 인스턴스화하려면 필요

windowname.OpenUserObject (userobjectvar {, x, y }) 

또는

windowname.OpenUserObject (userobjectvar, userobjecttype {, x, y }) 
나는 당신이 당신의 userobjectvar에 대한 iuo_backorders [ll_count + 1]를 사용 할 수있을 거라고 기대

, 하지만 그렇지 않다면, 단 하나의 사용자 객체 변수를 사용하고 그것을 인스턴스화 한 후에 배열 요소에 할당하십시오.

행운을 빕니다,

테리.

+0

오브젝트는 오브젝트가 열리기 전에 조작되거나 볼 수 있도록 팝업됩니다. 배열에 윈도우 임베디드 객체를 복제하면됩니다. 나는 init 호출 후에 OpenUserObject를 시도하고 null 객체 참조를 얻는다. – glasnt

+0

AFAIK 개체를 비 시각적으로 인스턴스화하고 조작 한 다음 표시 할 수 없습니다. 내가 볼 수없는 위치 (예 : 큰 음의 좌표)로 열어서 조작 한 다음 적절한 위치로 이동합니다.OpenUserObject()에서 null 객체 참조를 가져 오는 이유에 대해 설명해 준 내용을 알기가 어렵습니다. – Terry

+0

단일 창 모델에서는 uo_가 데이터 창에 포함되어 모든 것이 제대로 작동하는 것처럼 보입니다. 업데이트 된 질문 설명에 따라 객체 생성을 동적으로 복제하는 방법이 필요합니다. 다른 모든 것은 이미 uo_에서 처리되어야합니다. – glasnt

0

PowerBuilder는 잘못된 접근 방식을 사용하고 있다고 말하고 있습니다. OpenUserObject를 통해 런타임에 시각적 컨트롤을 만들 때 각 컨트롤의 x, y 좌표를 제공하는 레이아웃을 관리해야합니다. 또한 동일한 컨트롤 중 둘 이상을 원할 경우 Terry에서 게시 한 OpenUserObject의 두 번째 형식을 사용해야합니다. 마법사처럼 뭔가를 만들고 사용자 객체를 쌓고 싶다면 Disco에서 코드에 객체를 배치하는 것이 좋습니다. PowerBuilder에서, 무언가, 특히 가변 개수의 무언가 중 하나 이상을 표시하자 마자 데이터 윈도우 컨트롤에 도달해야합니다. 귀하의 경우, uo_backorder에있는 기능을 비 시각적 객체로 이동하고 데이터 윈도우에 데이터를 표시해야합니다. 모든 데이터 (state)가 DataWindow의 행에 있으면, 모든 행에 대해 nvo가 하나만 필요합니다.

+0

내 pbl 목록에 별도의 작은 노란색 uo_ 개체 녀석되는 datawindow 컨트롤? – glasnt

+0

Insert> Control> DataWindow 메뉴에서 윈도우에 데이터 윈도우 컨트롤을 배치합니다. 원래 창과 새로운 창에 대해 더 많이 알지 못하면 조언하기가 어렵습니다. 이름에서 나는 uo_backorder가 backordered 항목에 대한 정보를 표시한다고 생각합니다. 하나만 표시하는 창에서 이월 될 수있는 여러 항목을 표시하는 창을 만들려고합니까? –

+0

나는 그랬다. 내가 init 함수를 인식하지 못했기 때문에 나는 그것을 잘못하고 있었다. 그런 것들은 powerbuilder 기본 함수가 아니었다. – glasnt

관련 문제