我做了一个选择日期和地名的form2,在form1中调用,当没有选择地名的时候,会提示重新选择地名,然后重新读入地名选中项。  但是我的程序在出现提示后,重新进行选择后,没有读入地名选中项,我该如何优化我的程序?begintry
 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;

解决方案 »

  1.   

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

  2.   

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

  3.   

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