ListBoxで、特定の行を表示しないようにするには?

解決


fyuji  2003-06-30 03:02:49  No: 3931  IP: [192.*.*.*]

また、質問があります。
ホント、初心者的な質問かもしれませんが、お許しください m(_ _)m

ListBoxで、特定の行を、消すのではなく、表示しなくする方法ってのはありますか?
Deleteを使うと、他の行のインデックスが変わってしまうので、他の行のインデックスを保持したまま、リストから消したいのですが・・・

一応、ListBoxのプロパティやメソッドは確認したつもりですが、それらしいものは見つかりませんでした・・・
Visibleとかがあれば簡単だったのですが・・・

いい方法はないでしょうか?

編集    削除
Halbow  2003-06-30 03:31:38  No: 3932  IP: [192.*.*.*]

Halbow です。

> ListBoxで、特定の行を、消すのではなく、表示しなくする方法ってのはありますか?

ありません。

> Deleteを使うと、他の行のインデックスが変わってしまうので、他の行の
> インデックスを保持したまま、リストから消したいのですが・・・

Delete でもインデックスを保持するならいいんですか?
それなら、項目に '' を代入するだけです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items[7] := '';
end;

編集    削除
XOOX  2003-06-30 08:03:00  No: 3933  IP: [192.*.*.*]

>一応、ListBoxのプロパティやメソッドは確認したつもりですが、それらしいものは見つかりませんでした・・・
Visibleとかがあれば簡単だったのですが・・・

現状のままやるのには別にデータリストを用意して
Halbowさんのかかれたようにするのも一案ですが
コンポーネント作るというのも一案では?

本件はさほど難易度も高くないしいい例だと思います。
コンポーネントはインストールしないでTlistBoxから派生させれば
プロジェクトのフォルダーにソースがあれば
設計時にVisible設定は出来なくても動的変更は可能なはず

編集    削除
fyuji  2003-06-30 11:24:17  No: 3934  IP: [192.*.*.*]

なるほど・・・
''を代入するだけで出来たんですね。
またまた、私の知識不足でした。

確かに、これくらいなら、コンポーネントを作るのも、さほど難しくなさそうですね。
勉強のために、作ってみます。

Halbowさん、XOOXさん、どうもありがとうございました。

編集    削除