delphi编程 语言逻辑问题。
我做了一个选择日期和地名的form2,在form1中调用,当没有选择地名的时候,会提示重新选择地名,然后重新读入地名选中项。 但是我的程序在出现提示后,重新进行选择后,没有读入地名选中项,我该如何优化我的程序?
- Delphi(Pascal) code
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;[解决办法]
你应该在form2的关闭事件中判断是否有选择,如果没有选择则提示,而不要再次form2.ShowModal ;
[解决办法]
窗体的OnCloseQuery事件,用CanClose控制是否允许关闭窗口,在这里判断吧
[解决办法]
像楼上所说你呀,如果想实现对话窗口输入判断最好在OnCloseQuery事件就判断。
如果非要用楼主的方法,那应该放在循环中,退出条件为输入了符合要求的数据。你的程序显然不是循环,当然不行了。