基本的な質問で恐縮なのですが、どなたかお教えください。
TComboBoxには、OnChangeというイベントがあり、選択項目が
変わった瞬間を捉えて任意の処理を行うことが出来ます。
これと同じように、TListBoxでも選択項目が変わった瞬間
を捉えて任意の処理を行いたいのですが、どのようにすれば
分かるのでしょうか?
環境: WinXP SP2 + Delphi6 Personal
TListViewを使うのはどうでしょう?
ViewStyleプロパティに vsListをセットすれば、
TListBoxと同様に使えると思います。
選択項目の変化は、OnSelectItemイベントで捉えられます。
真琴:「OnChangeが欲しいって、こういうの、"ナイモノねだり"っていうンじゃない?」
広海:「ナイものは自分で作っちゃえば イイじゃん、ねェ」
真琴:「えっ?、自分で?…どうやって作るの?」
広海:「そんなコト、オレに聞くなょ、聞く相手が違うだろぅ」
真琴:「なぁ〜んだ、めずらしく知ってるのかと思ったら…」
広海:「"めずらしく"って、その言い方…、あぁ、また傷ついたぁ」
春子:「もう…、同じ手は何回も使えないわよ、ヒロミくん」
広海:「あ、そぅ?」
真琴:「カイトさん、OnChangeを作るって、そんなコトできるの?」
海都:「う〜ん…、できないコトはないけど…」
広海:「もったいぶってないで、ほら、サッサと教えてあげなよ」
海都:「アンタにそんなコト言われるスジあいはナイね」
広海:「マコト、ほら、オマエからも頼めョ」
真琴:「オネガイ、カイトさん、アタシも知りたいの」
海都:「…ん、じゃぁ、こうしてみたら?」
type
TListBox = class(StdCtrls.TListBox)
private
FOnChange: TNotifyEvent;
procedure CNCommand(var Msg: TWMCommand); Message CN_COMMAND;
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
type
TForm1 = class(TForm)
ListBox1: TListBox;
.....
procedure FormCreate(Sender: TObject);
private
procedure ListBox1Change(Sender: TObject);
.....
implementation
{TListBox}
procedure TListBox.CnCommand(var Msg: TWMCommand);
begin
inherited;
case Msg.NotifyCode of
LBN_SELCHANGE: if Assigned(FOnChange) then FOnChange(Self);
end;
end;
{TForm1}
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.OnChange := ListBox1Change;
end;
procedure TForm1.ListBox1Change(Sender: TObject);
begin
Caption := Caption + '*';
end;
........
真琴:「ふ〜ん、ホントにできちゃうんだぁ…"ナイモノねだり"もするもんだネ」
広海:「ねっ、カンタンだろ? マコト」
海都:「おぃ、それは、オレのセリフだろぅ」
返信が遅れましたm(_ _)m
>みんみん様
最初はそれで考えていました。でも、やはりListBoxはGUIプログラムの
基本となるコンポーネントですので、今後のことも考えたうえで質問さ
せていただいたところでした。
>オレのセリフ様
今、サンプルプロジェクトで確認させていただいたところ、うまくい
きました。本当にどうもありがとうございます。
ただ、まだこのコードの内容が理解しきれていないため、もう少し
動作確認とコード内容の理解が進んだところで解決とさせていただき
たいと思います。(Form1上に単純に置いただけのStdCtrls.ListBoxが、
この新しく定義したListBoxとして解釈されて動作するという理屈
そのものがまだよく分かっていません。動作したときは本当に驚きでした。)
ツイート | ![]() |