데이터 수정을 위한 사용자 인터페이스 만들기, 2부

지난 포스트에서는 데이터베이스 레코드를 HTML 형식으로 표시하는 HTML 페이지를 만들었습니다. 그러나 이 양식의 모든 필드는 비활성화되고 읽기 전용이었습니다. 이제 필드를 활성화하는 방법과 데이터를 검색하여 테이블에 추가하는 방법을 살펴보겠습니다.


필드 활성화



편집 모드에 대한 모든 필드를 활성화하는 가장 쉬운 방법은 editButton 를 추가하는 것입니다. 구문은 다음과 같이 간단합니다.

(form NIL
   (<h2> NIL (<id> (: nm)))
   ( editButton T )


이렇게 하면 필드가 비활성화된 동안 EDIT라고 표시된 버튼이 렌더링됩니다. 이 버튼을 누르면 모든 입력 필드가 활성화되고 버튼 레이블이 DONE 로 변경됩니다. 테스트해 봅시다:



또한 +Obj 접두사 클래스 덕분에 필드에 입력하자마자 입력 필드가 데이터를 제안하는 방법에 유의하십시오.


데이터 검색 및 선택



데이터베이스에 대한 매우 일반적인 요구 사항은 데이터를 검색하고 받은 값에서 항목을 선택하는 것입니다.

이를 구현하는 가장 쉬운 형식은 미리 정의된 GUI 요소choDlg("대화 상자 선택"용)를 사용하는 것입니다. 독립 실행형 GUI 요소의 경우 Dst이고 차트 내의 GUI 요소의 경우 임의의 숫자인 "대상"0이라는 하나의 인수를 사용합니다.

이름으로 사람을 검색할 수 있기를 원한다고 가정해 봅시다. 다음과 같이 choPerson 함수라는 함수를 정의할 수 있습니다.

(de choPerson (Dst)
   (choDlg Dst "Persons" '(nm +Person)) )



이제 새 레코드를 검색하여 레코드를 교체할 수 있는 위치에 삽입(choPerson Dst)할 수 있습니다. 구체적으로 이들은 어머니, 아버지, 파트너 및 자녀에 대한 기록이 될 것입니다. 이들은 또한 +Person 객체이기 때문입니다. choPerson를 추가하고 어떤 일이 일어나는지 봅시다.

(<grid> 5
   ... 
   (choPerson 0)
   "Father"
   (gui '(+E/R +Obj +TextField) '(pa : home obj) '(nm +Man) 30)
   ...

choPerson가 독립형 요소이기 때문에 그리드를 4에서 5로 늘려야 합니다.

이 수정 후 입력 필드 옆에 작은+ 버튼이 표시됩니다.




"편집"을 누른 다음 choPerson 버튼을 누르면 어떻게 됩니까? 검색 필드와 결과 목록이 있는 대화 상자가 나타납니다. 이름을 클릭하면 이 레코드의 페이지로 이동합니다. @ 기호를 클릭하면 이 레코드가 현재 열려 있는 페이지, choPerson 버튼에 연결된 필드에 추가됩니다.


cancel 를 클릭하면 대화 상자가 닫힙니다.


그것을 테스트하자!




트리뷰 기능 추가



이제 데이터에 대한 현재 보기와 이전Treeview 함수를 함께 가져와 보겠습니다. 버튼 형태로 treeview 페이지에 대한 링크를 추가해 보겠습니다.

(gui '(+Rid +Button) "Tree View"
   '(url "!treeReport" (: home obj)) ) ) ) ) )

+Rid 접두사 클래스로 인해 버튼은 양식의 나머지 부분이 활성화되지 않은 경우에도 항상 활성화됩니다. 이 버튼은 미리보기로 레이블이 지정되어 있으며 현재 개체를 인수로 사용하여 함수treeReport를 호출합니다.




클릭하면 이전에 디자인한 페이지treeReport로 리디렉션됩니다. 티

마지막 단계로 트리 보고서에서 링크를 재정의하여 이름을 클릭하면 해당 사용자의 레코드 페이지로 돌아가도록 합시다. url> 함수를 사용하여 객체의 mkUrl 메서드를 다시 사용할 수 있습니다.

(<href> (: nm) (mkUrl @))


이것은 사람의 개체를 person 인수로 사용하여 함수*ID에 대한 상대 링크를 생성합니다. 그러나 개체가 NIL 인 경우 오류가 발생할 수 있습니다. 따라서 먼저 try 함수를 사용하여 확인해야 합니다. 이 함수는 메서드와 개체를 인수로 사용하고 선택적으로 추가 인수(여기서는 탭에 대한 1 - 즉, 현재 탭을 변경하려고 합니다).

(when (try 'url> This 1)


이를 통해 원하는 대로 레코드와 트리 보기 사이를 이동할 수 있습니다.




이 예제here의 소스 코드를 찾을 수 있습니다.


출처



  • https://software-lab.de/doc/index.html

  • https://software-lab.de/doc/app.html
  • 좋은 웹페이지 즐겨찾기