Главная страница
    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
1-1165586648
.ruslan
2006-12-08 17:04
2007.02.04
Информация о создании компонента


2-1169037394
vitv
2007-01-17 15:36
2007.02.04
Результат запроса


2-1168961921
Галинка
2007-01-16 18:38
2007.02.04
Несколько ComboBox, ссылающихся на одну и ту же таблицу


2-1168863693
Obormot
2007-01-15 15:21
2007.02.04
Программное управление формой


2-1169041017
Garacio
2007-01-17 16:36
2007.02.04
Использовать ini для процедуры сравнения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский