在登陆界面的时候,帐号和密码输完了,点击登陆会报错,不是帐号和密码有错,可能是数据库出错,然后点退出的时候出报错.
错误如下图:
错误如下图:
解决方案 »
- Delphi API Hook的问题
- 在Form上放一个PageControl 后,Form的 OnKeyDown 失效
- 如何才能像windowns中资源管理器那样按住ctrl就可以选中多个图片进行操作呢?
- delphi和C的数据兼容...
- 为什么我的数据库“查询”老是不行,请教!!
- 获取数据表
- 如何将一个文本中的内容清空,再将自己数据库中的记录写入?
- 如何将一个RGB或HTML颜色值转化为Delphi颜色值,并在一个Edit1里面显示出来?
- 在MDI中,有两个非模式的子窗体,我想通过其中一个调用另一个,怎么调用?
- Delphi中打印问题:如果一个字段中的记录太长,可否实现自动换行?
- 如果控制dll中的窗口生成?
- Delphi如何写插入注册表?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls;type
TMain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure N1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
//procedure ShowHint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Main: TMain;
jj:integer;implementation
uses InfoForm,landForm,Findform;{$R *.dfm}procedure TMain.N1Click(Sender: TObject);
begin
APPLICATION.CreateForm(TInfo,Info);
Info.ShowModal;
Info.Free;
end;procedure TMain.N4Click(Sender: TObject);
begin
Application.Terminate;
end;procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;procedure TMain.FormCreate(Sender: TObject);
begin
jj:=0;
if jj = 0 then
begin
APPLICATION.CreateForm(TLanding,Landing);
Landing.ShowModal;
Landing.Free;
end;
//application.Hint;end;procedure TMain.N3Click(Sender: TObject);
begin
APPLICATION.CreateForm(Tfind,find);
find.ShowModal;
find.Free;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type
TLanding = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Landing: TLanding;implementation
uses MainForm;{$R *.dfm}procedure TLanding.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from UserForm where Tname = :Tname');
Parameters.ParamByName('Tname').Value:=edit1.Text;
Open;
end;
if (ADOQuery1.RecordCount=1) and (ADOQuery1.FieldByName('loginpass').AsString=edit2.Text) then
begin
self.Close;
//Main:=TMain.Create(application);
//Main.ShowModal;
end
else
begin
MessageDlg('用户名或密码有错!',mtinformation,[mbok],0);
edit1.SetFocus;
end;
end;procedure TLanding.Button2Click(Sender: TObject);
begin
application.Terminate;
end;procedure TLanding.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
Button1.Click
else
if key = #27 then
Button2.Click;
end;procedure TLanding.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
Button1.Click
else
if key = #27 then
Button2.Click;
end;procedure TLanding.FormCreate(Sender: TObject);
begin
jj:=1;
Edit1.Text:='';
Edit2.Clear;
end;procedure TLanding.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;end.
不太明白什么是动态数据连接?
是指手动写ADO的连接吗?
begin
Application.Initialize;
Application.ShowMainForm := False;
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmLogin, FrmLogin);
if FrmLogin.ShowModal =mrCancel then //取消登录主窗口自动退出,程序自动退出
FrmMain.Close
else
FrmMain.Show;
Application.Run;
end.
如果是在主窗口中加载,最好取消登录窗口的自动加载,procedure TFrmMain.FormCreate(Sender: TObject);
begin
Application.CreateForm(TFrmLogin, FrmLogin);
if FrmLogin.ShowModal =mrCancel then //取消登录主窗口自动退出,程序也自动退出
FrmMain.Close;
FrmLogin.free;
end;你的代码中主窗口创建后马上又创建了登录窗口,但是登录窗口不管作何处理,只要关闭了登录窗口,主程序就会退出,
procedure TLanding.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;
但是此时主窗口只是刚刚创建完成,主程序就执行了Application.Terminate,所以有些事件没有执行完或是对象没有释放,所以会报错~~!