안녕하세요.
CalcFields를 달랑 한번만 하고 마실건지? 수시로 이벤트를 막고 붙이고 하실지에 따라 다르게 하시는게 좀 낳습니다.
가령 딸랑 한번만 하고 끝이라면 변수하나 두어서 처리하는게 더 편하단 거죠.
var
bcalc : Boolean;
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
if bCalc then
begin
//계산해라
end;
end;
그게 아니라 조회가 빈번하거나 그러시면..
쿼리이벤트를 잘 보시면 afterscroll 이나 beforescroll 또 OnCalcFields 라고 있죠?
해당 이벤트 CalcFields 또는 Before, AfterScroll에 코딩을 하시고
한번 조회가 끝난 다음에 저 이벤트를 쿼리에서 빼낸다? 표현이 이상하넹.. 하시면 됩니다.
procedure TForm1.Button1Click;
begin
//계산안하면 안되겠니?
Query1.Close;
Query1.Open;
Query1.OnCalcFields(nil);
Query1.BeforeScroll(nil);
Query1.AfterScroll(nil);
스크롤 이벤트에서 다시 calculate하지 못하게 하면 되죠
즉 스크롤 이벤트를 nil 시키면 됩니다. 그리고 다시 계산해야할 부분에서 스크롤 이벤트를 calcuate하도록 다시 활성화 시키면 될것 같습니다.
코드가 없어서 막연하게 말씀드리네요.. 즐코딩 되시길..