我有一种记录类型。我想在TListbox中添加该记录类型的变量,并在TListbox的单击事件中检索它。有可能吗?如果是,那么是如何实现的?
我用以下命令添加了它
lstbox.AddItem(data,myrec);
它显示不兼容类型的错误。数据是字符串,myrec是我创建的MyRecord的变量。
用于添加:
New(fptr1);
ZeroMemory(fptr1,sizeof(fptr1^));
fptr1^ := fptr^;
lstboxLeft.AddItem(path,TObject(fptr1));
对于检索:
fptr := PData(lstboxLeft.Items[lstboxLeft.ItemIndex]);
发布于 2010-08-03 17:13:20
AddItem接受TObject作为第二个参数,并且记录不是对象。您可以将记录转换为TObject (通常是最好的解决方案),也可以将记录转换为对象。
下面是一个使用记录的工作示例:
type
PMyRec = ^TMyRec;
TMyRec = record
I : integer;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
P : PMyRec;
begin
New(P);
P.I := 42;
ListBox1.AddItem('One',TObject(P));
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
I : integer;
begin
//Free memory
for I := 0 to ListBox1.Items.Count - 1 do
Dispose(PMyRec(ListBox1.Items.Objects[I]));
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
P : PMyRec;
begin
P := PMyRec(ListBox1.Items.Objects[ ListBox1.ItemIndex ]);
ShowMessage( IntToStr(P.I) );
end;
发布于 2010-08-03 17:14:26
Type
PMyrec = ^MyRecord;
var
MyRec : PMyRec;
begin
new(MyRec);
//fill MyRec
lstbox.AddItem(data, TObject(myrec));
//Dispose
https://stackoverflow.com/questions/3394944
复制相似问题