有关模式窗口的问题请指教!急~~~~~~~~~~~~~~~~~~~(30分)

  • 主题发起人 主题发起人 angelwork
  • 开始时间 开始时间
A

angelwork

Unregistered / Unconfirmed
GUEST, unregistred user!
我在设计数据库程序时,有一个添加按钮用来调用另一个窗体写入新的数据,调用的是窗体的AddForm.ShowModal方法(模式窗体)。

模式窗体上,除了用以添入数据的edit 外,还有两个按钮,用于更新、取消(关闭窗体)数据库操作!

点击“更新”按钮后,系统会判断edit 是否为空,如果为空,
if Edits.Text='' then
begin
raise Exception.Create('【'+Labels.Caption+'】字段不能为空!请从新填写!');
Edits.SetFocus;
end;

问题就出在这里,本来意图是如果为空,则调用焦点到指定的edit 上!可模式窗口却关闭了!这是为什么呢?

这样的问题本人遇到多次!总是难以解决!还请各位高手指教一二,有何办法点击按钮后,不关闭模式窗体呢??
 
模态窗口就是这样,只有窗口关闭后,后面的代码才能执行。
如果你要是想实现这样的功能,还是在窗口的onclosequery中判断吧!
 
你的模式窗体上放的几个按钮是TBitBtn吧?而且你的TBitbtn的Kind属性也一定不是bkCustom吧?如果情况是这样,问题就出在这里。对于此类Button,在模式窗体中点击后,它会给模式窗体的ModalResult返回一个值,而一旦模式窗体得到一个返回值它就会立即返回调用口,导致窗体本身关闭。
所以建议你在模式窗体中用TButton或者在模式窗体中写如下过程(如二楼的朋友所言):
procedure TAddForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if trim(Edit1.Text)= '' then self.ModalResult := mrNone;
end;
 
谢谢2位的解意!。。。。

bjaman 对按钮的说明真的好透彻哦! 谢谢你。。。
 
后退
顶部