procedure(formFieldDynamic()
let( (fieldHeight addField fieldBase)
fieldHeight = 20
addField = list(
hiCreateButton(
?name 'addField
?buttonText "ADD ITEM"
?callback "formFieldDynamic_add()"
)
0:0 500:fieldHeight)
fieldBase = list(
hiCreateScrollRegion(
?name 'fieldBase
?scrollBars 'dynamic
)
0:50 500:100)
hiCreateAppForm(
?name 'formTest
?formTitle "fomrTest"
?fields list(
addField
fieldBase
)
?formType 'nonoptions
?buttonLayout 'OKCancel
) ; hiCreateAppForm
formTest->idx = 1
formTest->fieldHeight = fieldHeight
hiDisplayForm(formTest)
)
)
procedure(formFieldDynamic_add()
let( (fieldHeight yLoc newField)
fieldHeight = formTest->fieldHeight
yLoc = length(formTest->fieldBase->fieldList) / 2 * fieldHeight
newField = list(
list(
hiCreateButton(
?name concat("field" formTest->idx)
?buttonText sprintf(nil "field %d" formTest->idx)
?callback sprintf(nil "printf(\"field%d clicked\n\")" formTest->idx)
)
0:yLoc 200:fieldHeight)
list(
hiCreateButton(
?name concat("delete" formTest->idx)
?buttonText sprintf(nil "Delete %d" formTest->idx)
?callback sprintf(nil "formFieldDynamic_delete(hiGetCurrentForm() %d)" formTest->idx)
)
220:yLoc 100:fieldHeight)
)
formTest->idx = formTest->idx + 1
hiAddFields(formTest->fieldBase newField)
)
)
procedure(formFieldDynamic_delete(theForm idx)
let( ()
hiDeleteFields(theForm->fieldBase list(concat("field" idx) concat("delete" idx)))
formFieldDynamic_repositionFields(theForm->fieldBase)
)
)
procedure(formFieldDynamic_repositionFields(field @optional (fieldHeight 20))
let( (i idx maxIdx)
i = 0
idx = 0
maxIdx = length(field->fieldList) - 1
while(i <= maxIdx
hiMoveField(field nth(i field->fieldList) 0:fieldHeight*idx)
hiMoveField(field nth(i+1 field->fieldList) 220:fieldHeight*idx)
idx++
i = i + 2
)
)
)
'Programming > SKILL' 카테고리의 다른 글
instance에 terminal 이름과 같은 instTerm생성하기 (0) | 2019.02.25 |
---|---|
내장함수 재정의 (0) | 2019.02.24 |
유용하지만 자꾸 까먹는 함수 목록 (0) | 2019.02.22 |