Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Что отработает раньше: 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
3-1160361442
Climber
2006-10-09 06:37
2007.02.04
EDBEngineError


2-1168700386
RealGanj
2007-01-13 17:59
2007.02.04
Алгоритм перебора всех комбинаций


2-1169117274
knever
2007-01-18 13:47
2007.02.04
Оптимизация скорости работы программ для технических расчетов


2-1168969622
Jimmy
2007-01-16 20:47
2007.02.04
Сделать активным модальное окно


15-1168974200
PHPdeveloper
2007-01-16 22:03
2007.02.04
форумы по юридическим вопросам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский