アプリ版:「スタンプのみでお礼する」機能のリリースについて

Delphi .net WEB版での作成です。

LISTBOXを作成するソースがあります。

---
while 条件 do
begin
LstBox1.Items.Insert(Row,Text);
LstList.Items.Item[Row].value := LstValue;
end;
---

リストボックスは作成されますが、
上下キーで項目の移動ができません。
この作成をPage_Load の度に行えばできるのですが
作成処理は重いので、作成は1回のみで行いたいです。

どのようにすればよろしいのでしょうか?

A 回答 (1件)

一般的なユーザインタフェースの観点からアドバイス申し上げます。



「項目の移動」というのは項目の位置を変える(項目が1234と並んでいるのを2134のようにする)ことだと推察しますけれども、通常、上下キーは項目の選択に使いますので、移動には使わない方がよいのではないでしょうか。ListBox内の項目を移動するインタフェースでよくあるのは、選択した項目を上移動ボタン、下移動ボタンで動かすというものです。

具体的には、例えばWindowsXP + Delphi2007 VCLフォームアプリケーションでは下記のようになります。WEB版でも同様な考え方でできると思います。

-----
procedure TForm1.UpButtonClick(Sender: TObject); // 上移動ボタンの処理
var
ItemIndex: integer;
begin
ItemIndex:=ListBox1.ItemIndex;
if ItemIndex>=1 then
ListBox1.Items.Exchange(ItemIndex, ItemIndex-1); // 上の項目と交換
end;

procedure TForm1.DownButtonClick(Sender: TObject); // 下移動ボタンの処理
var
ItemIndex: integer;
begin
ItemIndex:=ListBox1.ItemIndex;
if (ItemIndex<>-1) and (ItemIndex<(ListBox1.Items.Count-1)) then
ListBox1.Items.Exchange(ItemIndex, ItemIndex+1); // 下の項目と交換
end;
-----

更に、項目が選択されていて移動できるときだけボタンをEnableにすれば、洗練されたインタフェースになるでしょう。

また、同じ項目を指定することが多いのでしたら選択した項目を自動的に一番上に移動しておく等も考えられます。(そもそも項目の位置が変わる/変えられることが使いやすいかどうかはよく考えた方がよいと思いますが)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!