염치불구.. 계속 질문 올립니다..
여기저기 찾아보면서 login form을 모달로 띄우는걸 했는데요..
확인버튼을 눌렀을때,
db의 id/pw랑 다르면 에러 메세지 띄우고 로긴 창이 계속 떠있게 해야하는데
저는 메세지 띄우고 로긴창이 꺼지고 메인창이 뜹니다.
질답이랑 팁에 이런 내용이 있던데..
그래서 나름 한다고 했는데 에러만 자꾸뜨네요 -_-;;;
메모리 참조에러..헉....ㅠ
뭐가 잘못된건지 좀 확인 부탁드릴께요.. ;
이 부분이 project->view source 했을때구요..
=======================================
program RFIDAttend;
uses
Forms,
Controls,
Admin_Main in 'Admin_Main.pas' {form_Main},
Admin_Login in 'Login\Admin_Login.pas' {form_Login},
Conne_DM in 'DataModule\Conne_DM.pas' {ConneDMs: TDataModule},
Prof in 'Prof\Prof.pas' {form_ProfInfo},
ExitMBox in 'Login\ExitMBox.pas' {form_ExitMbox},
Student in 'Student\Student.pas' {form_StudInfo},
OpenDM in 'DataModule\OpenDM.pas' {OpenDMs: TDataModule},
About in 'Help\About.pas' {ab_About},
Lesson in 'Class\Lesson.pas' {form_ClassLess},
Attend in 'Class\Attend.pas' {form_ClassAttend},
QureyDM in 'DataModule\QureyDM.pas' {QureyDMs: TDataModule};
{$R *.res}
var
strID, strPW: string;
begin
Application.Initialize;
// 로그인용 폼을 생성한다.
with Tform_Login.Create(Application) do begin
if ShowModal = mrOK then begin
// 인자 값을 받는다.
strID := edit_LoginID.Text;
strPW := edit_LoginPW.Text;
// 메인폼을 생성한다.
Application.CreateForm(Tform_Main, form_Main);
Application.CreateForm(Tform_ProfInfo, form_ProfInfo);
Application.CreateForm(Tform_ExitMbox, form_ExitMbox);
Application.CreateForm(Tform_StudInfo, form_StudInfo);
Application.CreateForm(TOpenDMs, OpenDMs);
Application.CreateForm(Tab_About, ab_About);
Application.CreateForm(Tform_ClassLess, form_ClassLess);
Application.CreateForm(Tform_ClassAttend, form_ClassAttend);
Application.CreateForm(TQureyDMs, QureyDMs);
Hide;
Free;
Application.Run;
end else if ModalResult = mrCancel then begin
Tform_Login.Create(Application);
end;
end
===============================================
이 부분이 로긴 창 부분입니다..
=================================================
procedure Tform_Login.bbt_LoginClick(Sender: TObject);
begin
if (edit_LoginID.Text = '') or (edit_LoginPW.Text = '') then begin
try
MessageDlg('ID와 PASSWORD를 모두 입력해 주세요.',mtError,[mbOK],0);
ModalResult := mrCancel;
edit_LoginID.Clear;
edit_LoginPW.Clear;
edit_LoginID.SetFocus;
exit;
except
MessageDlg('오류발생',mtError,[mbOK],0);
ModalResult := mrCancel;
edit_LoginID.SetFocus;
exit;
end;
end else begin
if ConneDMs.zcconn.Connected = False then ConneDMs.zcconn.Connected := True;
if QureyDMs.zrq_Admin.Active = False then QureyDMs.zrq_Admin.Active := True;
if QureyDMs.zrq_Admin.Active = True then begin
QureyDMs.zrq_Admin.SQL.Clear;
QureyDMs.zrq_Admin.SQL.Add('Select * from ADMINISTRATOR where UID=''+edit_LoginID.Text+'' and PASSWD=''edit_LoginPW.Text''');
QureyDMs.zrq_Admin.Open;
if QureyDMs.zrq_Admin.IsEmpty then begin
MessageDlg('아이디 혹은 비밀번호를 잘못입력하였습니다.',mtError,[mbOK],0);
ModalResult := mrCancel;
edit_LoginID.Clear;
edit_LoginPW.Clear;
edit_LoginID.SetFocus;
exit;
end else
ShowMessage('login성공');
ModalResult := mrOk;
exit;
end;
end;
end;
============================================================
고수님들 잘못된 부분 좀 알려주세요..
bbt_Login버튼에 ModalResult값을 설정하지 마세요. (mrNone)
procedure Tform_Login.bbt_LoginClick(Sender: TObject);
begin
if (edit_LoginID.Text = '') or (edit_LoginPW.Text = '') then begin
try
MessageDlg('ID와 PASSWORD를 모두 입력해 주세요.',mtError,[mbOK],0);
edit_LoginID.Clear;
edit_LoginPW.Clear;
edit_LoginID.SetFocus;
exit;
except
MessageDlg('오류발생',mtError,[mbOK],0);
edit_LoginID.SetFocus;
exit;
end;
end else begin
if ConneDMs.zcconn.Connected = False then ConneDMs.zcconn.Connected := True;
if QureyDMs.zrq_Admin.Active = False then QureyDMs.zrq_Admin.Active := True;
if QureyDMs.zrq_Admin.Active = True then begin
QureyDMs.zrq_Admin.SQL.Clear;
QureyDMs.zrq_Admin.SQL.Add('Select * from ADMINISTRATOR where UID=''+edit_LoginID.Text+'' and PASSWD=''edit_LoginPW.Text''');
QureyDMs.zrq_Admin.Open;
if QureyDMs.zrq_Admin.IsEmpty then begin
MessageDlg('아이디 혹은 비밀번호를 잘못입력하였습니다.',mtError,[mbOK],0);
edit_LoginID.Clear;
edit_LoginPW.Clear;
edit_LoginID.SetFocus;
end else
ShowMessage('login성공');
ModalResult := mrOk;
end;
end;
end;
mrCancel일경우 프로그램을 종료할 수 있도록 해주시는것이....
Application.Initialize;
// 로그인용 폼을 생성한다.
with Tform_Login.Create(Application) do begin
if ShowModal = mrOK then begin
// 인자 값을 받는다.
strID := edit_LoginID.Text;
strPW := edit_LoginPW.Text;
// 메인폼을 생성한다.
Application.CreateForm(Tform_Main, form_Main);
Application.CreateForm(Tform_ProfInfo, form_ProfInfo);
Application.CreateForm(Tform_ExitMbox, form_ExitMbox);
Application.CreateForm(Tform_StudInfo, form_StudInfo);
Application.CreateForm(TOpenDMs, OpenDMs);
Application.CreateForm(Tab_About, ab_About);
Application.CreateForm(Tform_ClassLess, form_ClassLess);
Application.CreateForm(Tform_ClassAttend, form_ClassAttend);
Application.CreateForm(TQureyDMs, QureyDMs);
Hide;
Free;
Application.Run;
end;
end;
end