Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Что отработает раньше: TDataSet.OnCalcField   Найти похожие ветки 

 
Ega23 ©   (2006-11-16 09:38) [0]

или TDataLink.ActiveChanged контрола, "смотрящего" на этот DataSet?


 
ЮЮ ©   (2006-11-16 09:46) [1]

А поставить бряки? Или, надеешься, что кто-то VCL знает настолько, что в исходники даже не полезет? :)


 
Ega23 ©   (2006-11-16 09:51) [2]


> А поставить бряки? Или, надеешься, что кто-то VCL знает
> настолько, что в исходники даже не полезет? :)


Не надо меня идиотом считать. Бряки не ставил, но в исходники сам слазил. По исходникам - сначала CalcFields для ActiveBuffer отработает, а потом рассылка пойдёт.
Интересует не упустил ли я чего-либо.


 
evvcom ©   (2006-11-16 10:12) [3]

> [2] Ega23 ©   (16.11.06 09:51)
> Бряки не ставил, но в исходники сам слазил

Лучше бряки поставь. Подтверди свою гипотезу практикой. Хотя, имхо, вроде очередность логичная. Но у всех разные понятия о логичности того или иного.


 
ЮЮ ©   (2006-11-16 10:24) [4]

А я разглядел другое:

procedure TDataSet.SetState(Value: TDataSetState);
begin
 if FState <> Value then
 begin
   FState := Value;
   FModified := False;
   DataEvent(deUpdateState, 0);
 end;
end;

procedure TDataSet.DataEvent(Event: TDataEvent; Info: Longint);
begin
 NotifyDataSources := not (ControlsDisabled or (State = dsBlockRead));
   deUpdateState:
     if ControlsDisabled then
     begin
       Event := deDisabledStateChange;
       Info := Integer(State <> dsInactive);
       NotifyDataSources := True;
     end;
 end;

 if NotifyDataSources then
 begin
   for I := 0 to FDataSources.Count - 1 do
     TDataSource(FDataSources[I]).DataEvent(Event, Info);
   if FDesigner <> nil then FDesigner.DataEvent(Event, Info);
 end;
end;


Н.д. изменил статус, оповестил DataSources, те DataLinks.
А вычислять свои вычислимые поля он, по-моему, без надобности не будет.


 
Anatoly Podgoretsky ©   (2006-11-16 10:31) [5]

> evvcom  (16.11.2006 10:12:03)  [3]

Конечно, зачем словам верить, даже самого провереного человека, все равно ведь ошибиться может, пускай редко, но даже самые, самые, самые гуру иногда ошибаются, особенно когда на память надеются.


 
ЮЮ ©   (2006-11-16 10:46) [6]

А бряки запросто показали:

procedure TDataSet.SetActive(Value: Boolean);
begin
 if (csReading in ComponentState) then
 begin
   FStreamedActive := Value;
 end
 else
   if Active <> Value then
   begin
     if Value then
     begin
       DoBeforeOpen;
       try
         OpenCursor;  // здесь вызовется TDataSet.CalculateFields</B
                                         
       finally
         if State <> dsOpening then
           OpenCursorComplete;  здесь вызовется  DataEvent(deUpdateState, 0);
       end;
     end else
     begin
       if not (csDestroying in ComponentState) then DoBeforeClose;
       SetState(dsInactive);
       CloseCursor;
       if not (csDestroying in ComponentState) then DoAfterClose;
     end;
   end;
end;

З.Ы. Но Ega23 не идиот бряки ставить. Зачем, если другие идиотв найдутся :)



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
15-1168543701
ArtemESC
2007-01-11 22:28
2007.02.04
Так и не понял Паскаля...


2-1168939463
nick_van_rijn
2007-01-16 12:24
2007.02.04
изменение переменных процесса снаружи


15-1168801350
vasIzmax
2007-01-14 22:02
2007.02.04
Просто интересно


2-1169158460
AlexeyT
2007-01-19 01:14
2007.02.04
Печать TImage/TBitmap?


15-1168359887
xayam
2007-01-09 19:24
2007.02.04
блин ну и умучался я с этой Вашей bds 2006 ))