Q&A

  • 메인폼이 실행되지 않습니다!
//project source

program SeverPos;



uses

Forms,

untData in 'untData.pas' {frmData: TDataModule},

untConfig in 'untConfig.pas' {frmConfig},

untPassword in 'untPassword.pas' {frmPassword},

Main in 'Main.pas' {frmMain},

untSeatCode in 'untSeatCode.pas' {frmSeatCode},

untSale in 'untSale.pas' {frmSale},

untCalendar in 'untCalendar.pas' {frmCalendar},

untSaleOption in 'untSaleOption.pas' {Form1},

untCalc in 'untCalc.pas' {frmCalc},

untMembership in 'untMembership.pas' {frmMembership},

untCook in 'untCook.pas' {frmCook},

untBillagain in 'untBillagain.pas' {frmBillagain},

untMoveTable in 'untMoveTable.pas' {frmMovetable},

untWorldpos in 'untWorldpos.pas' {frmWorldpos},

untExmenu in 'untExmenu.pas' {frmExmenu},

untSaletoday in 'untSaletoday.pas' {frmSaleToday},

untTodaydetail in 'untTodaydetail.pas' {frmTodaydetail},

HunUnit in '..HunUnit.pas',

untDayclose in 'untDayclose.pas' {frmDayclose},

untEndResult in 'untEndResult.pas' {frmEndResult};



{$R *.RES}



procedure CheckUser;

begin

try

frmPassWord := TfrmPassWord.Create(Application);

frmPassWord.ShowModal;

finally

frmPassWord.Free;

end;

end;





begin

Application.Initialize;

Application.Title:='Cute Pos';



Application.CreateForm(TfrmData, frmData);

CheckUser;

if frmPassWord.ValidUser='Y' then begin

Application.CreateForm(TfrmMain, frmMain);

Application.Run;

end;

end.



//frmPassword source

procedure TfrmPassword.Edit2KeyPress(Sender: TObject; var Key: Char);

var

tbl:TTable;

begin

if key<>#13 then Exit;

key:=#0;

if (Edit1.Text='') or (Edit2.Text='') then begin

Application.MessageBox('빠진 항목을 입력해 주십시오!','알림',MB_OK+

MB_ICONINFORMATION);

Edit1.SetFocus;

Exit;

end;

tbl:= TTable.Create(Self);

try

with tbl do begin

Close;

DatabaseName:= 'c:sale2000data';

TableName:= 'employee.db';

Open;

if Locate('USCODE;USPASS',VarArrayOf([Edit1.Text,Edit2.Text]),

[loCaseInSensitive]) then begin

frmData.uscode:= Fields[0].Asstring;

frmData.usname:= Fields[2].AsString;

ValidUser:= 'Y';

Self.Close;

Exit;

end;

ValidUser:='N';

Application.MessageBox('정확하지 않은 항목이 있습니다!','알림',MB_OK+

MB_ICONINFORMATION);

Edit1.Clear;

Edit2.Clear;

Edit1.SetFocus;

end;

finally

tbl.Free;

end;

end;



//frmMain의 생성부

procedure TfrmMain.FormCreate(Sender: TObject);

begin

KeybdHook := SetWindowsHookEx(WH_KEYBOARD,

KeybdHookProc,HInstance,GetCurrentThreadID);

DestroyWindow( ImmGetDefaultIMEWnd( Handle ) );

HideTaskBar;

Sysutils.ShortDateFormat:='yyyy/mm/dd';

Sysutils.ShortTimeFormat:='hh:mm:ss';

PrintLpt:= True;

LoadConfig;

end;





이렇게 작성을 했습니다. 어제까지는 잘 실행되던 것이 오늘 아침에 실행시켜 보니까

패스워드폼까지는 뜨는데 패스워드를 집어넣고 엔터를 치면 메인폼이 뜨지 않습니다.

메인폼의 Create이벤트에는 폼을 닫는 코드가 전혀없고 Show,Active이벤트에는 아무 코드도 작성하지 않았습니다. 어디가 잘못됐는지 잘 모르겠습니다. 파라독스를 멀티유저로 사용하는데 그부분에서 이상이 생길 수도 있는 것인지 모르겠습니다.

급한 것이라 다급히 질문올렸습니다.













1  COMMENTS
  • Profile
    화앙비홍 1999.12.22 20:48
    박성훈 wrote:

    > //project source

    > program SeverPos;

    >

    > uses

    > Forms,

    > untData in 'untData.pas' {frmData: TDataModule},

    > untConfig in 'untConfig.pas' {frmConfig},

    > untPassword in 'untPassword.pas' {frmPassword},

    > Main in 'Main.pas' {frmMain},

    > untSeatCode in 'untSeatCode.pas' {frmSeatCode},

    > untSale in 'untSale.pas' {frmSale},

    > untCalendar in 'untCalendar.pas' {frmCalendar},

    > untSaleOption in 'untSaleOption.pas' {Form1},

    > untCalc in 'untCalc.pas' {frmCalc},

    > untMembership in 'untMembership.pas' {frmMembership},

    > untCook in 'untCook.pas' {frmCook},

    > untBillagain in 'untBillagain.pas' {frmBillagain},

    > untMoveTable in 'untMoveTable.pas' {frmMovetable},

    > untWorldpos in 'untWorldpos.pas' {frmWorldpos},

    > untExmenu in 'untExmenu.pas' {frmExmenu},

    > untSaletoday in 'untSaletoday.pas' {frmSaleToday},

    > untTodaydetail in 'untTodaydetail.pas' {frmTodaydetail},

    > HunUnit in '..HunUnit.pas',

    > untDayclose in 'untDayclose.pas' {frmDayclose},

    > untEndResult in 'untEndResult.pas' {frmEndResult};

    >

    > {$R *.RES}

    >

    > procedure CheckUser;

    > begin

    > try

    > frmPassWord := TfrmPassWord.Create(Application);

    > frmPassWord.ShowModal;

    > finally

    > frmPassWord.Free;

    > end;

    > end;

    >

    >

    > begin

    > Application.Initialize;

    > Application.Title:='Cute Pos';

    >

    > Application.CreateForm(TfrmData, frmData);

    > CheckUser;

    > if frmPassWord.ValidUser='Y' then begin

    > Application.CreateForm(TfrmMain, frmMain);

    > Application.Run;

    > end;

    > end.

    >

    > //frmPassword source

    > procedure TfrmPassword.Edit2KeyPress(Sender: TObject; var Key: Char);

    > var

    > tbl:TTable;

    > begin

    > if key<>#13 then Exit;

    > key:=#0;

    > if (Edit1.Text='') or (Edit2.Text='') then begin

    > Application.MessageBox('빠진 항목을 입력해 주십시오!','알림',MB_OK+

    > MB_ICONINFORMATION);

    > Edit1.SetFocus;

    > Exit;

    > end;

    > tbl:= TTable.Create(Self);

    > try

    > with tbl do begin

    > Close;

    > DatabaseName:= 'c:sale2000data';

    > TableName:= 'employee.db';

    > Open;

    > if Locate('USCODE;USPASS',VarArrayOf([Edit1.Text,Edit2.Text]),

    > [loCaseInSensitive]) then begin

    > frmData.uscode:= Fields[0].Asstring;

    > frmData.usname:= Fields[2].AsString;

    > ValidUser:= 'Y';

    > Self.Close;

    > Exit;

    > end;

    > ValidUser:='N';

    > Application.MessageBox('정확하지 않은 항목이 있습니다!','알림',MB_OK+

    > MB_ICONINFORMATION);

    > Edit1.Clear;

    > Edit2.Clear;

    > Edit1.SetFocus;

    > end;

    > finally

    > tbl.Free;

    > end;

    > end;

    >

    > //frmMain의 생성부

    > procedure TfrmMain.FormCreate(Sender: TObject);

    > begin

    > KeybdHook := SetWindowsHookEx(WH_KEYBOARD,

    > KeybdHookProc,HInstance,GetCurrentThreadID);

    > DestroyWindow( ImmGetDefaultIMEWnd( Handle ) );

    > HideTaskBar;

    > Sysutils.ShortDateFormat:='yyyy/mm/dd';

    > Sysutils.ShortTimeFormat:='hh:mm:ss';

    > PrintLpt:= True;

    > LoadConfig;

    > end;

    >

    >

    > 이렇게 작성을 했습니다. 어제까지는 잘 실행되던 것이 오늘 아침에 실행시켜 보니까

    > 패스워드폼까지는 뜨는데 패스워드를 집어넣고 엔터를 치면 메인폼이 뜨지 않습니다.

    > 메인폼의 Create이벤트에는 폼을 닫는 코드가 전혀없고 Show,Active이벤트에는 아무 코드도 작성하지 않았습니다. 어디가 잘못됐는지 잘 모르겠습니다. 파라독스를 멀티유저로 사용하는데 그부분에서 이상이 생길 수도 있는 것인지 모르겠습니다.

    > 급한 것이라 다급히 질문올렸습니다.

    >

    >



    안녕하세요?

    짧은 지식이나마 도움이 되실지........



    제가 소스를 보기에 두가지가 제생가고가 다르군요...

    첫째, Project source에서 Application.CreateForm으로 생성되는 첫째폼이 mainform이라는 것이 맞을 것입니다. 이것은 프로그램에 따라 중요한 부분이 있죠(?)

    둘째, frmPassWord.ValidUser부분인데 CheckUser 함수에서 Free한 폼의 변수를 참조하면

    문제가 생길 것 같군요.

    저 같으면 CheckUser의 리턴값으로 다음과 같이 할 것 같습니다.

    if CheckUser then

    begin

    Application.CreateForm(TfrmMain, frmMain);

    Application.Run;

    end;





    즐거운 나날들......

    20000........