코드에 두 가지 문제점이 있습니다. 첫째, defaultplacement 속성의 doublequote 구문 : 오픈 라즐로의 최신 버전으로 필요하지 않은 오래된 구문입니다
<attribute name="defaultplacement" value="'insideview'"/>
. 다른 문제는 $ once {} 제약 조건을 사용하는 것입니다.이 제약 조건은 필요하지 않으며 컴파일러 예외를 발생시킵니다.
<attribute name="defaultplacement" value="$once{test.defaultplacement}"/>
하지만 제가 간단한 코드 예제를 사용하여 의미를 명확히하자
<canvas>
<class name="blackbox" extends="view">
<attribute name="bgcolor" value="black"/>
<attribute name="defaultplacement" value="blackinner"/>
<view name="blackinner" bgcolor="green"
x="10" y="10" width="${parent.width-20}" height="${parent.height-20}">
</view>
</class>
<class name="redbox" extends="view">
<attribute name="bgcolor" value="red"/>
<attribute name="defaultplacement" value="content"/>
<blackbox name="content"
x="10" y="10" width="${parent.width-20}" height="${parent.height-20}">
</blackbox>
</class>
<redbox x="10" y="10" width="200" height="200">
<view width="40" height="40" bgcolor="blue" />
</redbox>
</canvas>
이 예제 응용 프로그램은 클래스 블랙 박스 및 클래스 레드 박스를 정의합니다. 블랙 박스는 그린 아이보기가있는 블랙 박스에 불과하며 10 픽셀의 인세 트가 있습니다.
redbox는 20 픽셀의 인세 트가있는 blackbox 클래스/태그를 자식으로 사용합니다. redbox의 defaultplacement는 blackbox 인스턴스를 나타내며 blackbox의 defaultplacement는 'blackinner'라는 이름의 blackbox의 녹색 하위보기를 참조합니다.
그러면 코드가 파란색보기 (40x40 픽셀)를 내용으로하는 redbox의 인스턴스를 만듭니다. 이 응용 프로그램의 스크린 샷에서 볼 수 있듯이 파란보기는 블랙 박스의 그린뷰 내에 자동으로 정확하게 배치됩니다. 논의 된 변경 한 경우
![Screenshot of example application with defaultplacement working](https://i.stack.imgur.com/2EpjZ.png)
응용 프로그램의 원래 코드는 5.0 (트렁크)에 아무 문제없이 (내가 단순화 캔버스 파일에 모든 클래스를 넣었습니다) 컴파일 :
<canvas>
<class name="myframe" extends="view">
<attribute name="bgcolor" value="red"/>
<attribute name="defaultplacement" value="insideview"/>
<view x="5" y="5" width="${parent.width-10}" name='insideview'
height="${parent.height-10}"
bgcolor="#FFFFCC"/>
</class>
<class name="answerMain" extends="view">
<attribute name="defaultplacement" value="test"/>
<myframe name="test" width="220" height="20" />
</class>
<answerMain>
<text> HI </text>
</answerMain>
</canvas>
OpenLaszlo 컴파일러는이 경우 예외로 종료하지 않아야하지만 불행히도 컴파일러는 지난 2 년 동안 잘 유지되지 않았습니다.
OpenLaszlo 포럼과 Stackoverflow에서 질문 할 때 OpenLaszlo 포럼에 업로드 된 ZIP 파일 대신 Gist https://gist.github.com/의 형태로 코드를 추가하는 것이 좋습니다. 등록 된 포럼 사용자 만 ZIP 파일을 다운로드 할 수 있습니다. –
@ r.bitter : 그렇게하겠습니다. 고맙습니다.. – karthick