03-26-2014, 04:56 PM
★point1
グリッドの行削除は、チェックボックスで、実際の登録時に削除
★point2
グリッドの行追加は、レコードにボタンを用意
Curlのレコードグリッドで、ユーザが、行削除、行挿入をしたい、という要件があった場合、
エクセルと違って、「UNDO」を十分に実装できないので、よく検討したほうが良いと思う。
私は以前、削除機能に対して、レコード内にボタンを表示して、
ボタン押下時のイベントで、そのレコードを削除(非表示)にする、という実装をしたのですが、
これだと、ユーザが間違って削除ボタンを押下してしまったときに、
もとに戻すことが出来ず、使いづらいシステムになってしまいました。
削除については、チェックボックスのカラムを用意し、チェックボックスの値をフラグとして管理し、
実際にデータを登録するタイミングで、そのレコードが削除対象なのかどうかを判断させるのが良いかと思います。
出来れば、削除フラグの切り替えに応じて背景色を変更するとなお良いと思います。
レコードの追加については、レコード内にボタンを表示する方式でよいと思いますが、
追加したレコードを、押下したレコードの上に入れるのか、下に入れるのかは、
人によって意見が違うので、ユーザに確認したほうが良いと思います。
私個人としては、行追加を、どんな言葉で表現するかによって変わるかなと思っています。
「追加」という言葉であれば、下に入れる、
「挿入」という言葉であれば、上に入れる、というのが自然な気がします。
いずれにせよ、レコードの追加処理を行うと、レコードの表示位置が変更されたりするので、
RecordGrid.key-spec = RecordSetDisplay.preserve-indices の指定をお忘れなく。
グリッドの行削除は、チェックボックスで、実際の登録時に削除
★point2
グリッドの行追加は、レコードにボタンを用意
Curlのレコードグリッドで、ユーザが、行削除、行挿入をしたい、という要件があった場合、
エクセルと違って、「UNDO」を十分に実装できないので、よく検討したほうが良いと思う。
私は以前、削除機能に対して、レコード内にボタンを表示して、
ボタン押下時のイベントで、そのレコードを削除(非表示)にする、という実装をしたのですが、
これだと、ユーザが間違って削除ボタンを押下してしまったときに、
もとに戻すことが出来ず、使いづらいシステムになってしまいました。
削除については、チェックボックスのカラムを用意し、チェックボックスの値をフラグとして管理し、
実際にデータを登録するタイミングで、そのレコードが削除対象なのかどうかを判断させるのが良いかと思います。
出来れば、削除フラグの切り替えに応じて背景色を変更するとなお良いと思います。
Code:
{let people:RecordSet =
{RecordSet
{RecordFields
{RecordField "DELETE", domain = bool},
{RecordField "Name", domain = String},
{RecordField "Age", domain = int}
},
{RecordData DELETE = true, Last = "Smith", Age = 25},
{RecordData DELETE = false, Last = "Smith", Age = 29},
{RecordData DELETE = false, Last = "Jones", Age = 28}
}
}
{def delete-row-spec =
{proc {rg:RecordGrid, r:Record, idx:int}:#Background
{if r["DELETE"] asa bool then
{return {Background.from-string "gray"}}
}
{return null}
}
}
{value
{RecordGrid
record-source = people,
row-background-spec = delete-row-spec
}
}
レコードの追加については、レコード内にボタンを表示する方式でよいと思いますが、
追加したレコードを、押下したレコードの上に入れるのか、下に入れるのかは、
人によって意見が違うので、ユーザに確認したほうが良いと思います。
私個人としては、行追加を、どんな言葉で表現するかによって変わるかなと思っています。
「追加」という言葉であれば、下に入れる、
「挿入」という言葉であれば、上に入れる、というのが自然な気がします。
いずれにせよ、レコードの追加処理を行うと、レコードの表示位置が変更されたりするので、
RecordGrid.key-spec = RecordSetDisplay.preserve-indices の指定をお忘れなく。