关于stringlist.adobject()的用法!(20分)

  • 主题发起人 主题发起人 3368aa
  • 开始时间 开始时间
3

3368aa

Unregistered / Unconfirmed
GUEST, unregistred user!
我不知道怎么用的,哪位大侠指点一二?
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure FormClose(Sender: TObject
var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

type
PListItem = ^TMyListItem;
TMyListItem = record
s1,s2: string
//或是其它类型的数据。
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
ListItemPtr: PListItem;
begin
new(ListItemPtr);
ListItemPtr.s1 := 's1';
ListItemPtr.s2 := 's2';
listbox1.Items.AddObject('k',TObject(ListItemPtr));
end;


procedure TForm1.ListBox1Click(Sender: TObject);
var ListItemPtr: PListItem;
begin
ListItemPtr:= PListItem(ListBox1.items.Objects[ListBox1.ItemIndex]);
label1.Caption:=ListItemPtr.s1+':'+ListItemPtr.s2;
end;

procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
var
i:integer;
begin
for i := 0 to ListBox1.items.count -1 do
freemem(PListItem(listbox1.Items.Objects));
end;

end.
 
对zw84611的代码作一些补充

也可以采用Add对象的方法

这样比较易于理解

当然,对象析构的时候代码就需要改一改拉
for i := 0 to ListBox1.items.count -1 do
TObject(listbox1.Items.Objects)。Free;
TObject(listbox1.Items.Objects) := nil;
 
多人接受答案了。
 
后退
顶部