listbox的问题(100分)

  • 主题发起人 主题发起人 amourz
  • 开始时间 开始时间
A

amourz

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做到以下效果:当LISTBOX的内容发生改变时,比如增减了ITEM,或者ITEM值发生了变化,就自动
存入一个文本中,我如何检测LISTBOX的内容发生了改变呢?
 
可能要用到消息处理
 
具体怎么处理呢?如何截获消息?
 
你是如何让其改变的?
 
就是增减了ITEM,或者改变了ITEM值
 
派生你自己的 TYourListBox
 
不能构建一个ondatachange事件吗?
 
看看這些消息能否捕捉到.
LB_ADDSTRING
LB_DELETESTRING
LB_INSERTSTRING
 
派生你自己的 TYourListBox
在它的 onclick或onchange中
发一个自定义消息嘛
 
DEN你能不能给出些具体的代码?谢谢了.
 
還有一個很笨的方法,但很可行;
創建一動態數組,讓它與ListBox 的Item 相等.
然後判斷
1. ListBox.Count是否等於Length(動態數組),不等,就存入一个文本中.否則
2. 判斷內容啦.

 
呵呵,这个我也想过.不过....,各位大侠难道没有更好的办法了吗?
 
>> DEN你能不能给出些具体的代码?谢谢了.

從TListbox 派生你的TMyListbox,然後申明這些過程.
procedure LBADDString(var msg:TMessage);message LB_ADDSTRING;
procedure LBDeleteString(var msg:TMessage);message LB_DELETESTRING;
procedure LBInsertString(var msg:TMessage);message LB_INSERTSTRING;
在這些過程中就可以寫你保存為文本的代碼.

 
无法通过,Unknown directive: 'message'?
 
uses 了 Messages.pas 嗎?
 
To amourz
留下你的qq和mail大家研究研究

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure ListBox1Data(Control: TWinControl; Index: Integer;
var Data: String);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
TListb1 = class(TListBox)
procedure LBADDString(var msg:TMessage);message LB_ADDSTRING;
procedure LBDeleteString(var msg:TMessage);message LB_DELETESTRING;
procedure LBInsertString(var msg:TMessage);message LB_INSERTSTRING;
end;
var
Form1: TForm1;
Listb1: TListb1;

implementation

{$R *.dfm}

procedure TForm1.ListBox1Data(Control: TWinControl; Index: Integer;
var Data: String);
begin
ShowMessage('aa');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Listb1.Items.Add('3');
end;

{ Listb1 }

procedure TListb1.LBADDString(var msg: TMessage);
begin
inherited;
ShowMessage('Add');
end;

procedure TListb1.LBDeleteString(var msg: TMessage);
begin
inherited;
ShowMessage('Delete');
end;

procedure TListb1.LBInsertString(var msg: TMessage);
begin
inherited;
ShowMessage('Insert');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Listb1 := TListb1.Create(Self);
Listb1.Parent := Form1;
end;

end.
 
搞定了谢谢DEN,老人家,vine,huawdg
 
多人接受答案了。
 
后退
顶部