+ -
当前位置:首页 → 问答吧 → delphi编程 语言逻辑问题。

delphi编程 语言逻辑问题。

时间:2011-12-11

来源:互联网

我做了一个选择日期和地名的form2,在form1中调用,当没有选择地名的时候,会提示重新选择地名,然后重新读入地名选中项。 但是我的程序在出现提示后,重新进行选择后,没有读入地名选中项,我该如何优化我的程序?
Delphi(Pascal) code

begin

try
 form2:=Tform2.Create(self);
 form2.ShowModal ;
   if form2.FlatEdit1.Text <>'@@!@@' then
    begin
     iii:='';
     n1:=0;
     SList := TStringList.Create;
       for i:=0 to form2.RxCheckListBox1.Items.Count-1 do
         if form2.RxCheckListBox1.Checked[i] then
           begin
           iii:=form2.RxCheckListBox1.Items[i];
           delete(iii,1,pos(',',iii));
           SList.Add(iii);
           inc(n1);
           end;
         if iii='' then
           begin
           showmessage('请选择站点!');
           form2.ShowModal ;
           end;


作者: miceyou   发布时间: 2011-12-11

你应该在form2的关闭事件中判断是否有选择,如果没有选择则提示,而不要再次form2.ShowModal ;

作者: bdmh   发布时间: 2011-12-11

窗体的OnCloseQuery事件,用CanClose控制是否允许关闭窗口,在这里判断吧

作者: wzzwwz   发布时间: 2011-12-11

像楼上所说你呀,如果想实现对话窗口输入判断最好在OnCloseQuery事件就判断。
如果非要用楼主的方法,那应该放在循环中,退出条件为输入了符合要求的数据。你的程序显然不是循环,当然不行了。

作者: zuoyexingchen   发布时间: 2011-12-11