procedure TDM.dsInsaDataChange(Sender: TObject; Field: TField);

begin

  fmInsa.sbtnFirst.Enabled := not tblInsa.Bof;

  fmInsa.sbtnPrior.Enabled := not tblInsa.Bof;

  fmInsa.sbtnNext.Enabled := not tblInsa.Eof;

  fmInsa.sbtnLast.Enabled := not tblInsa.Eof;


end;


procedure TDM.dsInsaStateChange(Sender: TObject);

begin

  //등록, 삭제 버튼은 조회 중에만

  fmInsa.btnInsert.Enabled := tblInsa.State= dsBrowse;

  fmInsa.btnDelete.Enabled := tblInsa.State= dsBrowse;

  //cancel, post 버튼은 입력이나 편집시에만

  fmInsa.btnCancel.Enabled := tblInsa.State in [dsInsert, dsEdit];

  fmInsa.btnPost.Enabled := tblInsa.State in [dsInsert, dsEdit];

end;


=> datasource 이 이벤트 에서 이벤트 연결 끊고


procedure TfmInsa.FormCreate(Sender: TObject);

begin


  DM.dsInsa.OnDataChange := DM.dsInsaDataChange;

  DM.dsInsa.OnStateChange:= DM.dsInsaStateChange;

end;


procedure TfmInsa.FormClose(Sender: TObject; var Action: TCloseAction);

begin


  DM.dsInsa.OnDataChange := nil;

  DM.dsInsa.OnStateChange:= nil;


  Action := caFree;

end;


procedure TfmInsa.FormActivate(Sender: TObject);

begin

  DM.dsInsaStateChange(DM.dsInsa);

  DM.dsInsaDataChange(DM.dsInsa, DM.tblInsaID);

end;


Posted by 레디37
,