위아래 버튼으로 포털 행 재정렬

3733 단어 FileMaker
이번 고객용 솔루션으로 포털 행의 교체 기능을 작성했습니다. 이것은 어쩌면 필요가있을 것 같기 때문에 구현 방법을 설명하기로 결정했습니다.

개요



포털 행의 상하 교환을 버튼으로 실시한다고 하는 것입니다.
아래 화면에 있는 상하의 버튼을 클릭하면 클릭한 행의 상하의 행과 위치가 바뀝니다.
※정렬 순서는 동작 확인용으로 표시하고 있습니다만, 레이아웃상에 없어도 문제 동작에 지장은 없습니다



이번 샘플이라면, 아이 테이블의 「정렬 순서」필드의 값은 1부터의 일련번호인 것이 조건입니다. 스크립트를 일련번호 이외에 대응시키거나, 행의 삭제시에 일련번호가 되는 처리의 궁리가 필요하므로 그 점은 주의해 주세요.

사용자 정의 함수 사용 정보



이번 샘플에서는 스크립트 인수의 전달 및 수신에 커스텀 함수를 이용하고 있습니다.
사용한 커스텀 함수에 대해서는, 이전에 해설을 작성했으므로 그쪽을 참조해 주세요.
스크립트 인수에 대한 설명은 이쪽

상세 설명



테이블 정의



포털을 이용하기 때문에 테이블은 부모와 자식의 2개 정의합니다.
샘플에서는 최소한의 항목만 정의했습니다.
설정에 대한 자세한 내용은 샘플 파일을 참조하십시오.



스크립트 정의



버튼을 눌렀을 때 실제로 정렬을 변경하는 스크립트를 정의합니다.
이번에는 가능한 한 범용적으로 사용할 수있는 스크립트로 하나만 만들고 있습니다.

스크립트 이름 "포털 행 이동 (정렬 필드 이름; 방향)"
 1 # ========================================
 2 #    概要:
 3 #            ポータル行の並びを入れ替える
 4 #    戻り値:
 5 #            null
 6 #    パラメータ:
 7 #            並びフィールド名:並び順指定に使用しているフィールド名(テーブルオカレンス名も含める)
 8 #            移動の方向:アクティブ行を上に移動->"up", アクティブ行を下に移動->"down"
 9 #    呼出元:
10 #            並びを入れ替えたいポータルの上下ボタンのクリック時
11 #    補足説明:
12 #            アクティブなポータル行を指定された向きに移動するように行の入れ替えをする
13 #    History:
14 #            2015-08-26 新規作成
15 # ========================================
16 If [ #Assign ( Get(スクリプト引数) ) ] 
17  変数を設定 [ $recsu ; 値: Count(GetField($並びフィールド名)) ] 
18  If [ $向き = "up" and (GetField($並びフィールド名) ≠ 1) // 一番上の行の時は無効 ] 
19      フィールドを名前で設定 [ $並びフィールド名 ; GetField ( $並びフィールド名 ) - 1 ] 
20      ポータル内の行へ移動 [ 前の ] 
21      フィールドを名前で設定 [ $並びフィールド名 ; GetField ( $並びフィールド名 ) + 1 ] 
22  Else If [ $向き = "down" and ( $recsu > GetField($並びフィールド名) ) // 一番最後の行の時は無効 ] 
23      フィールドを名前で設定 [ $並びフィールド名 ; GetField ( $並びフィールド名 ) + 1 ] 
24      ポータル内の行へ移動 [ 次の ] 
25      フィールドを名前で設定 [ $並びフィールド名 ; GetField ( $並びフィールド名 ) - 1 ] 
26  End If
27  レコード/検索条件確定 [ ダイアログなし ] 
28 End If

간단하게 해설하면, 지정된 방향에 맞추어서 배열용의 필드치를 인접하는 행과 바꾸고 있을 뿐입니다.
이동 선행의 값을 확인하지 않고 1을 가감하고 있을 뿐이므로, 일련 번호인 것이 전제가 되고 있습니다.

포털 정의



포털은 정렬 순서 필드별 정렬을 지정합니다.


버튼 정의



마지막으로 상하 버튼의 정의입니다.
클릭시 호출하는 것은 이전 스크립트입니다.
우선은 「상」버튼으로부터.


다음 "아래"버튼. 실제로는 인수의 "방향"의 값이 다를 뿐입니다.


설명은 이상입니다.
스크립트는 범용성이 있으므로, 그대로 카피해 사용하는 것도 가능할까 생각합니다. (단 자기 책임으로 사용하십시오)

이번 샘플은 이하의 장소에 두었으므로, 자세한 것은 파일을 참조해 주세요.
샘플 파일

좋은 웹페이지 즐겨찾기