关于mrOK的问题。(50分)

  • 主题发起人 主题发起人 饿饱鹅
  • 开始时间 开始时间
饿

饿饱鹅

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在主窗体出现之前先出现登录窗体?
主窗体是FmMain,登录窗体是FmXtdl,在登录窗体中有两个按钮,分别是OK和CANCEL
Application.Initialize

Application.CreateForm(TFmMain, FmMain)

FmXtdl:=TFmXtdl.Create(Application)

if FmXtdl.ShowModal = mrOK then
begin
FmXtdl.Free

FmMain.Show

end

else
begin
FmXtdl.Free

Application.Terminate

end

Application.Run

我引用了本程序,可是系统老是 [Error] gz.dpr(27): Undeclared identifier: 'mrOk'
指这句if FmXtdl.ShowModal = mrOK then。
我百思不得其解,请各位高手指点一二。谢谢!
 
按键的类型设置是mrOK吗?
 
因为你在Uses段没有加入Controls这个单元。
 
答jedei兄:以上是在工程中,如何加controls。在fmxtdl中是系统自动加的。
答cjf兄:按键是bitbtn,kind-bkOK.
why?
 
program Project1;

uses
Forms,
Controls,
Unit1 in 'Unit1.pas' {FmMain},
Unit2 in 'Unit2.pas' {FmXtdl};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TFmMain, FmMain);
Application.CreateForm(TFmXtdl, FmXtdl);
if FmXtdl.ShowModal = mrOK then
Application.Run
else
Application.Terminate

end.
 
如果设置fmMain 为MDI form
设fmxddl 为 normal form 系统显示出错,说不能建立窗口方式。我想是
fmxtdl.showmodal 原因吧?!
可是我又必须设fmmain为多窗口的主窗口方式,请各位不吝指教。
 
可直接在FmXtdl窗口中对Result赋值,需integer型,
在工程中用 if FmXtdl.ShowModal = 1 then 就可以了。
不太清楚可以查看ShowModal的帮助。
 
:饿饱鹅>>在主程序中showmodal是危险的,出错估计就难免了!我也做过!
但不能if FmXtdl.ShowModal = mrOK then ,如果你在FmXtdl的close中mrok估计就可以!
我也是这么解决的!
实在不行你可以在主窗体中放置一按钮,onclick事件FmXtdl.ShowModal,在主程序中
Application.Run的上面加FmMain.buttonclick(nil);至于如何让主窗体在此之前hide你想想把!

 
呵呵,我前一阵刚搞定! :)

program Containment;

uses
Forms,
Main in 'MAIN.PAS' {MainForm},
Log in 'Log.pas' {LoginForm};

{$R *.RES}

begin
Application.Initialize;
Application.ShowMainForm:=false
// Here!!
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
Application.Run;
end.



unit Log;

interface

uses
Windows, ...

type
TLoginForm = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
LoginForm:TLoginForm;

implementation

{$R *.DFM}

uses
Main;

procedure TLoginForm.BitBtn1Click(Sender: TObject);
begin
if Edit1.Text='' then
begin
MessageDlg('请输入密码!',mtConfirmation,[mbOK],0);
exit;
end;
if ValidatPwd(Edit1.Text)=false then //密码验证过程
begin
MessageDlg('密码错误,请重新输入!',mtConfirmation,[mbOK],0);
exit;
end;
MainForm.Show
// Here!!
Free;
end;
procedure TLoginForm.BitBtn2Click(Sender: TObject);
begin
Application.Terminate
//退出程序
end;

end.
 
program login;

uses
Forms,
Main in 'MAIN.PAS' {MainForm},
Log in 'Log.pas' {LoginForm};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
with TLoginFrom.Create(MainForm) do
if ShowModal = mrOk then
Application.Run
else
Application.Terminated.
end.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部