Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12740] Re:ModalResult 리턴 순서 바꾸니 잘됩니다.!
장재영 [jangjy1216] 1580 읽음    2009-06-30 09:32
Re:ModalResult 리턴 순서 바꾸니 잘됩니다.!

감사 합니다.

장성호 님이 쓰신 글 :
: ModalResult 값을 코딩에서 주려면 Close호출후에 ModalResult값을 줘야합니다.
:
:
: procedure TFrmItemSearch.BitOkClick(Sender: TObject);
:    Var I,K : Integer ;
:  begin
:     FOR I := 0 TO dmModule.QItemMast.FieldCount -1 DO
:        mMItFd[I] := dmModule.QItemMast.Fields.Fields[I].AsString ;
:  
:     dmModule.QItemMast.Close ;
:     K := ModalResult ;
:  //   sHOWMESSAGE(INTTOSTR(K) + ' 번') ;
:     Close ;
:     ModalResult:= mrOk ;   //요렇게 순서만 바꾸면 됩니다.
:  end;
: 

:
: 요것 별것 아닌데
: 어디에  자세히 설명해놓은곳도 없고 헷갈리는 요소인것 같네요
:
: 왜그러가하면?
:
: TCustomForm의 Close함수에 나와 있습니다.
: 아래 코드를 보시면
: Form.Close함수에서  Modal폼일경우 ModalResult값을 default로 항상 mrCancel로 설정해버립니다.
:
: procedure TCustomForm.Close;
: var
:   CloseAction: TCloseAction;
: begin
:    //Modal폼이면 Close함수에서 ModalResult값을 default로 항상 mrCancel로 설정함
:   if fsModal in FFormState then 
:     ModalResult := mrCancel
:   else
:     if CloseQuery then
:     begin
:       if FormStyle = fsMDIChild then
:         if biMinimize in BorderIcons then
:           CloseAction := caMinimize else
:           CloseAction := caNone
:       else
:         CloseAction := caHide;
:       DoClose(CloseAction);
:       if CloseAction <> caNone then
:         if Application.MainForm = Self then Application.Terminate
:         else if CloseAction = caHide then Hide
:         else if CloseAction = caMinimize then WindowState := wsMinimized
:         else Release;
:     end;
: end;
: 

:
: 그러니 ModalResult값을 설정후에 Close호출하면
: 항상 ModalResult값이 mrCancel이 되는것입니다.
:
:
: 그럼..
:
:
:
: 장재영 님이 쓰신 글 :
: : ModalResult 리턴에 대해서
: : 품목 명칭 찿는 데요 없으면 조회 화면을 띄워서 선택후
: : A FORM 유닛에서 품목 명칭 찿는 데요 없으면  B FORM 조회 화면을 띄워서 선택후 이때 ModalResult := mrOk 해줌 결과값 1임.
: : A FORM 결과 FORM ModalResult 항상 2임.
: :
: : 어디가 잘못되었나요?
: :
: : A UNIT (TfrmDrwMastI) 에서
: :
: : unit UDrwMastI;
: :
: : interface
: :
: : uses
: :   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
: :   StdInsMDForm, Db, DBTables, DBCtrls, StdCtrls, Buttons, ExtCtrls, Mask,
: :   CMEdit, CMDBCombo, CMDBLookupCombo, CMDBEdit, CMGrids, CMDBGrids, Grids,
: :   DBGrids;
: :
: : type
: :   TfrmDrwMastI = class(TStdlnsMDForm)
: :     LblSuju: TLabel;
: :     EdSCode: TCMEdit;
: :     EdECode: TCMEdit;
: :     Label2: TLabel;
: :     Label3: TLabel;
: :     Label4: TLabel;
: :     Label14: TLabel;
: :     Label15: TLabel;
: :     Label16: TLabel;
: :     EdDrwName: TCMDBEdit;
: :     EdDrwNo: TCMDBEdit;
: :     EdCust: TCMDBEdit;
: :     EdItem: TCMDBEdit;
: :     EdDesign: TCMDBEdit;
: :     EdHKey2: TCMEdit;
: :     ComboCust: TCMDBLookupComboBox;
: :     ComboItem: TCMDBLookupComboBox;
: :     EdHKey1: TCMEdit;
: :     Label5: TLabel;
: :     EdTKey1: TCMEdit;
: :     Label19: TLabel;
: :     Label20: TLabel;
: :     Label22: TLabel;
: :     Label27: TLabel;
: :     EdCnt: TCMDBEdit;
: :     EdTDesign: TCMDBEdit;
: :     EdfUnit: TCMDBEdit;
: :     EdBigo: TCMDBEdit;
: :     ComboItmCode: TCMDBLookupComboBox;
: :     CMDBGrid: TCMDBGrid;
: :     QItmHMast: TQuery;
: :     DSItmHMast: TDataSource;
: :     QItmTMast: TQuery;
: :     DSItmTMast: TDataSource;
: :     QCstMastH: TQuery;
: :     DSCstMastH: TDataSource;
: :     QryDel: TQuery;
: :     QSujuMast: TQuery;
: :     Label25: TLabel;
: :     EdTotCnt: TCMDBEdit;
: :     BomCopy: TBitBtn;
: :     QBomMast: TQuery;
: :     Query1: TQuery;
: :     Label26: TLabel;
: :     EdKiBonCnt: TCMDBEdit;
: :     Label10: TLabel;
: :     EdMEGbn: TCMDBEdit;
: :     ComboMEGbn: TCMDBComboBox;
: :     QryTSum: TQuery;
: :     qryDetailSujuSeq: TIntegerField;
: :     qryDetailSeqCnt: TIntegerField;
: :     qryDetailItem: TStringField;
: :     qryDetailDesign: TStringField;
: :     qryDetailIOUnit: TStringField;
: :     qryDetailKiBonCnt: TFloatField;
: :     qryDetailCnt: TFloatField;
: :     qryDetailPrice: TFloatField;
: :     qryDetailTaxAmt: TFloatField;
: :     qryDetailVatAmt: TFloatField;
: :     qryDetailMaker: TStringField;
: :     qryDetailBigo: TStringField;
: :     qryDetailWight: TFloatField;
: :     qryDetailSizeX: TFloatField;
: :     qryDetailSizeY: TFloatField;
: :     qryDetailSizeH: TFloatField;
: :     qryDetailMEGbn: TStringField;
: :     qryDetailSujuCode: TStringField;
: :     qryDetailFileGbn: TStringField;
: :     qryDetailSujung: TIntegerField;
: :     Label1: TLabel;
: :     EdCstT: TCMDBEdit;
: :     ComboCstT: TCMDBLookupComboBox;
: :     QCstMastT: TQuery;
: :     DSCstMastT: TDataSource;
: :     EdItName: TDBEdit;
: :     Label6: TLabel;
: :     procedure EdHKey1Exit(Sender: TObject);
: :     procedure FormCreate(Sender: TObject);
: :     procedure FormDestroy(Sender: TObject);
: :     procedure bitBtnQueryClick(Sender: TObject);
: :     procedure EdHKey2KeyPress(Sender: TObject; var Key: Char);
: :     procedure EdTKey1KeyPress(Sender: TObject; var Key: Char);
: :     procedure EdTKey1Click(Sender: TObject);
: :     procedure bitBtnPostClick(Sender: TObject);
: :     procedure dSrcMasterDataChange(Sender: TObject; Field: TField);
: :     procedure dSrcDetailDataChange(Sender: TObject; Field: TField);
: :     procedure BomCopyClick(Sender: TObject);
: :     procedure EdPriceExit(Sender: TObject);
: :     procedure EdKiBonCntExit(Sender: TObject);
: :     procedure EdTotCntExit(Sender: TObject);
: :     procedure EdTDesignExit(Sender: TObject);
: :     procedure EdMEGbnExit(Sender: TObject);
: :     procedure ComboMEGbnClick(Sender: TObject);
: :     procedure ComboItmCodeClick(Sender: TObject);
: :     procedure EdBigoExit(Sender: TObject);
: :     procedure EdTDesignKeyPress(Sender: TObject; var Key: Char);
: :   private
: :     { Private declarations }
: :     procedure HdTailSum1(pCode :String; pSeq : Integer) ;
: :     Procedure ItemStore() ;
: :
: :   public
: :     { Public declarations }
: :   end;
: :
: : var
: :   frmDrwMastI: TfrmDrwMastI;
: :     mSuju,mMEGbn : String ;
: :     mSeq,mIOGbn : Integer ;
: :     mNKey : ARRAY[0..1] OF Integer ;
: :     mAmt : Double ;
: :     FocusLook: TWinControl;
: :
: : implementation
: :   Uses Dm,MsgConst,FuncS,UItemSearch ;
: :
: : {$R *.DFM}
: :
: : procedure TfrmDrwMastI.EdTDesignKeyPress(Sender: TObject; var Key: Char);    명칭이 없음 조회화면 띄워주고 DB에 넣어줌.
: : begin
: :   inherited;
: :     If Key = #13 then Begin
: : //       FrmItemSearch := TFrmItemSearch.Create(Salf);
: :        mMItFd[2] := EdTDesign.Text ;
: : //       mItRigh := QItemSearch(mMItFd[2])
: :        if mMItFd[2] <> QItmTMast.FieldByName('Design').AsString THEN Begin  <-- 명칭이 같은게 없으면
: :          FrmItemSearch := TFrmItemSearch.Create(SELF);                      <--
: :          FrmItemSearch.ShowModal;
: : //         FrmItemSearch.Show;
: :
: :        end ;
: :     if FrmItemSearch.ModalResult = mrOK then          <--- 여기가 문제임.(FrmItemSearch.ModalResult = 2, mrOK = 1 임
: :        qryDetail.FieldByName('Item').AsString := mMItFd[0] ;
: :
: :         
: :     end ;
: : end;
: :
: : //------
: :
: : B FORM (TFrmItemSearch) 임
: : 여기서 A FROM 선언 안해주었음.
: :
: :
: : procedure TFrmItemSearch.BitOkClick(Sender: TObject);
: :   Var I,K : Integer ;
: : begin
: :    FOR I := 0 TO dmModule.QItemMast.FieldCount -1 DO
: :       mMItFd[I] := dmModule.QItemMast.Fields.Fields[I].AsString ;
: :
: :    dmModule.QItemMast.Close ;
: :    K := ModalResult ;
: : //   sHOWMESSAGE(INTTOSTR(K) + ' 번') ;
: :    ModalResult:= mrOk ;   여기가 제되대됨.(FrmItemSearch.ModalResult = 2, mrOK = 1 임
: :    Close ;
: : end;

+ -

관련 글 리스트
12737 ModalResult 리턴에 대해서 장재영 1535 2009/06/29
12738     Re:ModalResult 리턴에 대해서 장성호 2369 2009/06/29
12740         Re:ModalResult 리턴 순서 바꾸니 잘됩니다.! 장재영 1580 2009/06/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.