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
[12738] Re:ModalResult 리턴에 대해서
장성호 [nasilso] 2368 읽음    2009-06-29 19:35
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 리턴에 대해서 장성호 2368 2009/06/29
12740         Re:ModalResult 리턴 순서 바꾸니 잘됩니다.! 장재영 1580 2009/06/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.