我想获得一个Frame里的Listview1的项目数,代码是Listview1.Items.Count,结果总是0(Listview1有6条数据)。此时如果访问Listview1.Items[5]则正常没有错误,之后再Listview1.Items.Count则返回6.请问是什么原因?是不是和Frame有关?谢谢大家~
解决方案 »
- 请问怎么弄存储过程里的可选参数~~
- CategoryButtons2.Categories[0].Items的Onclick事件
- 关于dephi的语法
- 小弟做的新版DelphiICQ网站,大家来评评!
- 请教各位一个关于sql server数据库图片显示的问题,急!!!
- 如何判断是否按下了Ctrl+V键?
- 如何将ADOquery取得的数据集在Fastreport中形成报表?马上给分!
- ADOTable的 LookupKeyFields,LookupResultField,KeyFields怎么用?
- 一般什么情况需要用ReportBuilder的交叉表阿,我例子看了半天看不明白
- 不看不知道,一看忘不掉。。。。。。。
- dbgrid手动添加列的单元格数据填充的问题
- 大家如何做帮助文档的
Listview1的数据是设计时就赋予的,
另外我的代码是这样的:
//此时已经创建完了
i:=Listview1.Items.Count;//i=0
s:=Listview1.Items[5].Caption;//s有值
[/code]
“
结果总是0(Listview1有6条数据)。此时如果访问Listview1.Items[5]则正常没有错误,之后再Listview1.Items.Count则返回6
”是不是i是全局变量,刚赋值就被别处修改了?
此句之后必须用到变量i,才能得到i的值,否则,delphi,会认为i为无用变量,被忽略i:=Listview1.Items.Count;
ShowMessage(IntToStr(i));//i:=6;
此句之后必须用到变量i,才能得到i的值,否则,delphi,会认为i为无用变量,被忽略i:=Listview1.Items.Count;
ShowMessage(IntToStr(i));//i:=6;
此句之后必须用到变量i,才能得到i的值,否则,delphi,会认为i为无用变量,被忽略i:=Listview1.Items.Count;
ShowMessage(IntToStr(i));//i:=6;
我新建了一个工程,主窗体是Unit1,Frame的单元是Unit2.Frame里只放了一个Listview,里面有数据,没写其它代码。
Unit1的代码如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
{引用Unit2(即Frame2所在单元)}
Unit2;type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
//在这儿声明
myframe:TFrame2;
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
begin
myframe:=TFrame2.Create(Self);
(*设置myframe为不可见。问题出在这里,
如果去掉这句则ShowMessage(IntToStr(myframe.lv1.Items.Count))显示6
如果保留则显示0;
调试发现只有当myframe显示到窗口上(被panel等盖住不算)才显示6
*)
myframe.Visible:=False;
myframe.Parent:=Self;
ShowMessage(IntToStr(myframe.lv1.Items.Count));
end;end.
请问怎么能保持myframe.Visible:=False;而正常显示出Items.Count呢?谢谢大家~
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit2,CommCtrl;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
myframe:TFrame2;
public end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
myframe := TFrame2.Create(self);
myframe.Visible := false;
myframe.Parent:=Self;
showMessage(inttostr(SendMessage(myframe.ListView1.Handle, LVM_GETITEMCOUNT, 0, 0)));
ShowMessage(IntToStr(myframe.ListView1.Items.Count));
end;end.
怎么说呢,原则上来说这是BORLAND的一个笨蛋写的。呵呵
~谢谢每次都回答我的问题:-)
只是不太明白为什么myframe.lv1.Items.Count在frame显示前就获取不了呢?
這跟PARENT在關系,也就是LISTVIEW所在的OWNER有關系,你可翠看下LISTVIEW取COUNT的代碼就會明白了