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;
'델파이' 카테고리의 다른 글
자동생성이 아니라 동적생성으로 하면서 폼을 딱 한번만 생성하기 (0) | 2014.01.16 |
---|