Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> уведомление об обновлении DataSource? 
:(
    Опции темы
_hunter
  Дата 9.5.2004, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



как компоненты типа DBMemo получают уведомленее об обновлении их DataSource?

Заранее благодарю за ответ.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
x77
Дата 9.5.2004, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



на двух уровнях: а) как и любые порядочные TCustomEdit'ы в OnChange, b) в OnDataChange самого дадасорс.

обрабатывать эти события надо достаточно осторожно, т.к. их первый вызов может приходиться на тот момент, когда тдатасет ещё не открыт, и обращение к его полям в этих обработчиках можеть присести к исключительной ситуации. поэтому если они всё-таки перехватываются, и при этом в них пользуются поля таблицы, надо в самом начале проверять, открыта ли она и если нет - то сваливать.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Medved
Дата 9.5.2004, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



2_hunter А вы не пробовали смотреть исходники Delphi?



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
x77
Дата 9.5.2004, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Pegas, smile.gif



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
_hunter
Дата 10.5.2004, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



пробовал smile.gif

я так понимаю, нужен этот кусок:
(из конструктора TDB...)
Код
 FDataLink := TFieldDataLink.Create;
 FDataLink.Control := Self;
 FDataLink.OnDataChange := DataChange;


в TFieldDataLink:
Код
procedure TFieldDataLink.RecordChanged(Field: TField);
begin
 if (Field = nil) or (Field = FField) then
 begin
   if Assigned(FOnDataChange) then FOnDataChange(Self);
   FModified := False;
 end;
end;


TDataLink:
Код
procedure TDataLink.RecordChanged(Field: TField);
begin
end;


Код
procedure TDataLink.DataSetChanged;
begin
 RecordChanged(nil);
end;


Код
procedure TDataLink.DataEvent(Event: TDataEvent; Info: Longint);
var
 Active, First, Last, Count: Integer;
begin
...
           case Event of
             deDataSetChange: DataSetChanged;
             deDataSetScroll: DataSetScrolled(Count);
             deLayoutChange: LayoutChanged;
           end;
...
end;


и вот тут застрял sad.gif
т.к. непонятно кто вызывает это DataEvent
(разве-что вотsmile.gif
Код
procedure TDataLink.SetDataSource(ADataSource: TDataSource);
begin
 if FDataSource <> ADataSource then
 begin
   if FDataSourceFixed then DatabaseError(SDataSourceChange, FDataSource);
   if FDataSource <> nil then FDataSource.RemoveDataLink(Self);
   [b]if ADataSource <> nil then ADataSource.AddDataLink(Self);[/b]
 end;
end;



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
x77
Дата 10.5.2004, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



а зачем эти дебри? ты свой компонент пишешь?

DataEvent вызывает множество объектов, TFields в момент изменения данных, например, TCustomCоnnection в момент подключения к серверу и др.
Добавлено @ 15:09
открой Db.pas и сделай поиск по DataEvent.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.