panel上的鼠标事件!(急),该如何解决
panel上的鼠标事件!!(急)
我搞不清楚那里错了,可运行后就出错!!帮帮修改一下!!!
procedure TForm1.Panel1Click(Sender: TObject);
var
pi:integer;
icoun,iid:integer;
begin
icoun:=strtoint(rightstr(tpanel(sender).Name,1));
for pi:=1 to panel1.ControlCount-1 do
begin
if panel1.Controls[pi].ClassName='TPanel'then
begin
iid:=strtoint(rightstr(tpanel(sender).Name,1));
label1.Caption:=Tpanel(sender).ClassName+tpanel(sender).Name;
plw:='listview'+inttostr(iid);
pplw:=tlistview(plw);
label2.Caption:=pplw.Name;//运行到这里出错!!
end;
end;
end;
------解决方案--------------------
plw := 'listview ' + inttostr(iid);
pplw := tlistview(plw);
只能这个代码写得有创意。。。
plw是string类型,实际上string和TListView类型都是指针,所以可以编译器让pplw := tlistview(plw);通过了
但并不表示,编译后就会智能的判断出字符串所代表的实例
不过让是pplw指向了plw的地址,而这个地址中存放的内容并不时ListView的实例,当访问的时候会出现异常。
我搞不清楚那里错了,可运行后就出错!!帮帮修改一下!!!
procedure TForm1.Panel1Click(Sender: TObject);
var
pi:integer;
icoun,iid:integer;
begin
icoun:=strtoint(rightstr(tpanel(sender).Name,1));
for pi:=1 to panel1.ControlCount-1 do
begin
if panel1.Controls[pi].ClassName='TPanel'then
begin
iid:=strtoint(rightstr(tpanel(sender).Name,1));
label1.Caption:=Tpanel(sender).ClassName+tpanel(sender).Name;
plw:='listview'+inttostr(iid);
pplw:=tlistview(plw);
label2.Caption:=pplw.Name;//运行到这里出错!!
end;
end;
end;
------解决方案--------------------
plw := 'listview ' + inttostr(iid);
pplw := tlistview(plw);
只能这个代码写得有创意。。。
plw是string类型,实际上string和TListView类型都是指针,所以可以编译器让pplw := tlistview(plw);通过了
但并不表示,编译后就会智能的判断出字符串所代表的实例
不过让是pplw指向了plw的地址,而这个地址中存放的内容并不时ListView的实例,当访问的时候会出现异常。
- Delphi(Pascal) code
TComponent(pplw) := FindComponent(Format('ListView%d', [iid])); if Assigned(pplw) then Label2.Caption := pplw.Name else Label2.Caption := 'NULL';