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也不行,当再次点击增加按钮时第一次增加的内容才出现,为什么?应该怎么更改?
展开
 我来答
wooden954
推荐于2016-08-18 · TA获得超过1万个赞
知道大有可为答主
回答量:6135
采纳率:93%
帮助的人:803万
展开全部

使用其它窗口来对主窗口中的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;
yueyun889
推荐于2016-09-02 · TA获得超过725个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:760万
展开全部
我用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的值是多少
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式