delphi中在listview中用窗口的方式增加item
procedureTStuArg.btnAddClick(Sender:TObject);//增加按钮事件beginApplication.CreateForm(TSet...
procedure TStuArg.btnAddClick(Sender: TObject);//增加按钮事件
begin
Application.CreateForm(TSetStuArg,SetStuArg);//生成一个窗口
SetStuArg.Show; //显示窗口
with StuArg.lvStuArg.Items.Add do //增加item中的选项
begin
Caption:=(SetStuArg.edtName.Text); //姓名=学生信息设置窗口中姓名字符串,以下都是
SubItems.Add(SetStuArg.edtId.Text);
SubItems.Add(SetStuArg.cbbGender.Items.Strings[SetStuArg.cbbGender.itemindex]);
SubItems.Add(SetStuArg.edtAge.Text);
SubItems.Add(SetStuArg.cbbGrade.Items.Strings[SetStuArg.cbbGrade.itemindex]);
end;
refresh;//刷新
end;
运行的时候点击增加按钮关闭后根本显示不出来,添加refresh也不行,当再次点击增加按照时才出现,为什么?应该怎么更改?
运行的时候点击增加按钮,在第二个窗口里面输入各项值,点确定关闭第二个窗口后在第一个窗口里根本显示不出来,添加refresh也不行,当再次点击增加按钮时第一次增加的内容才出现,为什么?应该怎么更改? 展开
begin
Application.CreateForm(TSetStuArg,SetStuArg);//生成一个窗口
SetStuArg.Show; //显示窗口
with StuArg.lvStuArg.Items.Add do //增加item中的选项
begin
Caption:=(SetStuArg.edtName.Text); //姓名=学生信息设置窗口中姓名字符串,以下都是
SubItems.Add(SetStuArg.edtId.Text);
SubItems.Add(SetStuArg.cbbGender.Items.Strings[SetStuArg.cbbGender.itemindex]);
SubItems.Add(SetStuArg.edtAge.Text);
SubItems.Add(SetStuArg.cbbGrade.Items.Strings[SetStuArg.cbbGrade.itemindex]);
end;
refresh;//刷新
end;
运行的时候点击增加按钮关闭后根本显示不出来,添加refresh也不行,当再次点击增加按照时才出现,为什么?应该怎么更改?
运行的时候点击增加按钮,在第二个窗口里面输入各项值,点确定关闭第二个窗口后在第一个窗口里根本显示不出来,添加refresh也不行,当再次点击增加按钮时第一次增加的内容才出现,为什么?应该怎么更改? 展开
展开全部
使用其它窗口来对主窗口中的ListView添加数据的代码如下:
在使用中,关键是窗口必须在关闭后才执行添加数据的代码,而Show函数在实际执行时,是不会等待窗口关闭的,因此,它导致还未得到窗口中的数据就已经执行完了添加代码,因此导致添加的数据不正确。
为了解决这个问题,数据界面窗口必须使用模式显示,即调用 ShowModal函数。
procedure TStuArg.btnAddClick(Sender: TObject);//增加按钮事件
begin
Application.CreateForm(TSetStuArg,SetStuArg);//生成一个窗口
SetStuArg.ShowModal;//*****使用此函数是关键,不可以使用show函数
with StuArg.lvStuArg.Items.Add do //增加item中的选项
begin
Caption:=(SetStuArg.edtName.Text);
//姓名=学生信息设置窗口中姓名字符串,以下都是
SubItems.Add(SetStuArg.edtId.Text);
SubItems.Add(SetStuArg.cbbGender.Items.Strings[SetStuArg.cbbGender.itemindex]);
SubItems.Add(SetStuArg.edtAge.Text);
SubItems.Add(SetStuArg.cbbGrade.Items.Strings[SetStuArg.cbbGrade.itemindex]);
end;
refresh;//刷新
end;
展开全部
我用form设置是可以的,看看你的代码里有没有焦点的变换导致,或者formshow里有没有代码
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(Tform2,form2);//生成一个窗口
form2.Show; //显示窗口
with form2.listview1.Items.Add do //增加item中的选项
begin
Caption:=('test'); //姓名=学生信息设置窗口中姓名字符串,以下都是
SubItems.Add('11');
SubItems.Add('111');
SubItems.Add('22');
SubItems.Add('222');
end;
refresh;//刷新
end;
更多追问追答
追问
你这样直接增加是可以显示出来的,我的意思是item里的值取新窗口对应edt里的字符串,这样确定后显示不出来的
追答
那就看你的新窗口里的值是否存在,比如你的Edit内的内容是在formshow之后做的,那么edit的值取不到的。
你断点看看edit的值是多少
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询