经过几次试验我找到了解决办法:定义一个全局变量,什么类型你可以自己定,假设是var flag:integer=0;在form2.show的同时设flag:=1;listview1的onSelectItem这样写: if (flag=1)and(item<>nil) then form2.Caption:=item.Caption;在form1的onCloseQuery中将flag改为0: flag:=0; 这样就没有问题了。 这个问题可能是在form2关闭后,form1关闭过程中触发了listview1的onSelectItem事件,具体没研究过,但以上做法可以行的通。 验证通过了,别忘了给我加分!!
出错的原因是因为窗体关闭时还触发了 Listview1.OnSelectItem 事件,解决方法:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Listview1.OnSelectItem:=nil; end;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
form2.caption:=item.caption;
运行可以,但关闭程序老是要报错!
Caption:=Form1.Listview1.SelectedItem.Caption;
Selected: Boolean);
if assigned(form2) then
form2.caption:=item.caption;
你可以先将要显示Caption的窗体的标题栏去掉!!!(也就是无边框窗体)。
然后,欺骗系统自定义标题栏(也就是拦截系统消息),赋与它与真实标题栏一样的功能,
这样,你就可以随意改变它了。
只须在传过去以后,使Canvas重Paint一次而已,很简单的。
if (flag=1)and(item<>nil) then
form2.Caption:=item.Caption;在form1的onCloseQuery中将flag改为0: flag:=0;
这样就没有问题了。
这个问题可能是在form2关闭后,form1关闭过程中触发了listview1的onSelectItem事件,具体没研究过,但以上做法可以行的通。
验证通过了,别忘了给我加分!!
begin
Listview1.OnSelectItem:=nil;
end;