Delphi .net WEB版での作成です。
LISTBOXを作成するソースがあります。
---
while 条件 do
begin
LstBox1.Items.Insert(Row,Text);
LstList.Items.Item[Row].value := LstValue;
end;
---
リストボックスは作成されますが、
上下キーで項目の移動ができません。
この作成をPage_Load の度に行えばできるのですが
作成処理は重いので、作成は1回のみで行いたいです。
どのようにすればよろしいのでしょうか?
No.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にすれば、洗練されたインタフェースになるでしょう。
また、同じ項目を指定することが多いのでしたら選択した項目を自動的に一番上に移動しておく等も考えられます。(そもそも項目の位置が変わる/変えられることが使いやすいかどうかはよく考えた方がよいと思いますが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リソースファイルとは・・・
-
ボタンの配置を変更したい
-
ホームページビルダー21で作成...
-
MFCダイアログボックスを最前面...
-
エディットコントロールの色の...
-
CButtonのBMP・アイコンの表示...
-
CRichEditCtrlでペーストする文...
-
VC(Ver6.0)でダイアログサイズ...
-
コンボボックスのドロップダウ...
-
メッセージボックスを大きくす...
-
エクセル VBA 「Sub Auto_Open(...
-
ボタンの表示の色、フォントを...
-
画面のOnload
-
ダイアログの上のテキストボッ...
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
コンボボックス内の文字サイズ変更
-
グラフの交点の求め方(Excel)
-
コントロールの書式設定で、“コ...
-
PCで「使用可能な場合はグラフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ボタンの表示の色、フォントを...
-
コンボボックスのドロップダウ...
-
フォーム上のリストボックスに...
-
ダイアログボックスで指定した...
-
C# ボタンコントロール内で文字...
-
ダイアログの上のテキストボッ...
-
confirmダイアログの表示文字に...
-
'int' から 'LPCSTR' に変換で...
-
MFCダイアログボックスを最前面...
-
メッセージボックスのボタン文...
-
vbscriptで、ファイル選択ダイ...
-
ボタンの配置を変更したい
-
ダイアログにプレビュー表示
-
リソースファイルとは・・・
-
エクセル VBA 「Sub Auto_Open(...
-
ダイアログの表示位置の保存
-
VC(Ver6.0)でダイアログサイズ...
-
ダイアログの一部を半透明化す...
-
MFC ポップアップメニューのチ...
おすすめ情報