달력

82025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
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
	)
)
)
Posted by 이제웃자
|