ModalResult的问题,如果设置成了mrOk,怎么写代码控制让单击此按钮后不关闭窗口? 如题,原因是我在此接钮处判断用户输入的是否正常,如果用户输入的不合适要求,就提示用户输入有误,并保持窗口打开状态。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在窗体内增加一个var bValidate: boolean;//私有变量按钮事件触发时if bValidate <> true then ModalResult := mrNone; 觉得设置为mrNone的比较好。在确定按钮里,所有的判断都通过了再设置为mrOK。 试试在该窗口的OnCloseQuery里写判断,不合条件就CanClose:=False; >>如果设置成了mrOk不要设置成 mrOK而是在代码中自己设置,大概如下:if checkOk then result := mrOK; 同意aiirii,不要设按钮的ModalResult 而是在代码中写,这样代码可读性好一些,控制也方便一些。 同意 g961681(技术庸人(清净世界)) 的方法,不过可能还需要设置一个全局变量作为判断的var FormcanClose:boolean;在OnCloseQuery中判断CanClose:=FormcanClose;至于FormcanClose是为True或者False就看你自己的意愿了。 unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2;implementation{$R *.dfm}var formCanClose:boolean;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin CanClose:=formCanClose;end;procedure TForm2.Button2Click(Sender: TObject);begin formCanClose:=true;end;procedure TForm2.Button1Click(Sender: TObject);begin formCanClose:=false;end;end.button1和button2的ModalResult都是mrok。。但Button1Click不会关闭窗口,而Button2Click则会关闭窗口。。就代表了条件成功与否。。你可以看看你的软件中如何来写这个条件。。 直接设置成none在这个按钮的CLIKC事件中,动态的设成mrok. 求一简单算法! 强烈建议开辟GIS专栏 delphi2005的数据库功能如何 已知今天now,如何求一年后的日期? adoQuery如何定位到一个已知的索引?(在线等,解决了马上给分) 控件下载?? 关于数据库软件安装程序的制作 Memo问题 如何将中文代码转换成Unicode代码? 用rave怎样做报表? 禁止程序两次执行 大家来讨论一下这个软件是根据什么原理作的?
var
bValidate: boolean;//私有变量按钮事件触发时
if bValidate <> true then
ModalResult := mrNone;
在确定按钮里,所有的判断都通过了再设置为mrOK。
CanClose:=False;
不要设置成 mrOK而是在代码中自己设置,大概如下:if checkOk then
result := mrOK;
不要设按钮的ModalResult
而是在代码中写,这样代码可读性好一些,
控制也方便一些。
CanClose:=FormcanClose;至于FormcanClose是为True或者False就看你自己的意愿了。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}
var
formCanClose:boolean;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=formCanClose;
end;procedure TForm2.Button2Click(Sender: TObject);
begin
formCanClose:=true;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
formCanClose:=false;
end;end.
button1和button2的ModalResult都是mrok。。但Button1Click不会关闭窗口,而Button2Click则会关闭窗口。。就代表了条件成功与否。。你可以看看你的软件中如何来写这个条件。。
在这个按钮的CLIKC事件中,动态的设成mrok.