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;