如何运行生成ListView控件及其Item的双击事件?(100分)

  • 主题发起人 主题发起人 pyh_jerry
  • 开始时间 开始时间
P

pyh_jerry

Unregistered / Unconfirmed
GUEST, unregistred user!
listview1 := Tlistview.create(self);
listview1.parent := form1;
listview1.ondbclick := mydbclick;
...
...
procedure TForm1.mydbclick(Sender: TObject);
var
aitem :Tlistitem;
begin
sender as Tlistview do
begin
if selected= nil then exit;//如果没有选中的item则离开
aitem := selected;    //
  showmessage(aitem.caption);
end;
end;
 
to 楼上的老兄:
listview1.parent := form1;这句不行!parent是Twidgetcontrol类型,编译都通不过
 
myListView:=TListView.Create(self);
myListView.OnDblClick:=myListViewDblClick;

当然myListViewDblClick里面要用selected来判断当前的是哪个Item
 
listview1.parent := form1; 这句没问题
listview1.parent是TWinControl; 当然可以赋值了,可以把子类赋给父类.
如果不复制,就看不到listview了
 
哎,有被别人搞定:(
 
真的不行,这是出错信息:
[Error] main.pas(68): Incompatible types: 'TWidgetControl' and 'TMainFm'
 
呵呵, pyh_jerry用的应该是CLX而不是VCL
那你就设成Parent := Self;就行了,管它是TWinControl还是TWidgetControl。
 
Self一样的不行,刚试过了
 
我这边是可以的,程序都已经运行了!
你要是万一不行的话,就先form上放一个panel1:Tpanel
listview1.parent := panel1 就可以了
 
xianjun说的对,我不是用的VCL的Tlistview,但VCL的TListView的parent属性同样是TWidgetControl类型的
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, StdCtrls, ComCtrls, ImgList, DB, ADODB, NMUDP,
Psock, NMMSG, QComCtrls;//------注意这里
type
TMyLtVw=class(TListView)
procedure OnItemDbClk(Sender: TObject; Item: TListItem);
public
constructor Create(AOwner: TComponent);override;
end;
procedure TMyLtVw.OnItemDbClk(Sender: TObject; Item: TListItem);
begin
ShowMessage(Item.Caption);
end;
constructor TMyLtVw.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OnItemDoubleClick:=OnItemDbClk;
end;
procedure TMainFm.FormCreate(Sender: TObject);
begin
UserLtVw:=TMyLtVw.Create(self);
try
with UserLtVw do begin
Left:=0;Top:=0;
Width:=100;Height:=200;
Parent:=Self;
Visible:=true;
end;
except
ShowMessage('Error');
end;
end;
 
你究竟在用哪一套? 一会是VCL一会又是CLX的。
你的LISTVIEW是CLX的,但测试程序TMainFRM却是VCL的?????
重新New一个CLX Application,然后再把代码移过去就行了。
 
谢谢,我另外想办法了[^]
 
后退
顶部