Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вызов процедуры по ссылке


Автор: Keeper89 12.5.2011, 11:38
Доброго времени суток.

Имеется датамодуль (с датасетом) и форма, ссылающаяся на этот модуль.
Как можно отследить на форме (сделать что-то типа колбека) событие в датасете?

Чтобы была возможность сделать так:
Код

procedure Form1.XXX;
begin
  // датасет изменен, текущая запись...
end;

Автор: Snowy 12.5.2011, 11:54
Обычный эвент.
Создаёшь эвент своего типа (с нужными параметрами), делаешь датасету пропертю типа нужный_эвент.
Назначаешь из формы датасету свою функцию, как эвент.
Вобщем обычный кастомный эвент.

Автор: Keeper89 12.5.2011, 12:21
Snowy, можно примерчик?

Автор: Keeper89 12.5.2011, 12:45
Сделал так:

Модуль:
Код

TProjectDSTProc = procedure of object;

...

public
    ProjectDSTProc: TProjectDSTProc;

...

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  DM.ProjectDSTProc := ProjectDataChanged;
end;

...

procedure TDM.dsProjectsDataChange(Sender: TObject; Field: TField);
begin
  if Assigned(ProjectDSTProc) then
    ProjectDSTProc;    
end;


Форма:
Код

procedure ProjectDataChanged;

...

procedure TfrmMain.ProjectDataChanged;
begin
  Caption := Format('%.2m', [A])
end;


Все верно?

Автор: Snowy 12.5.2011, 12:51
Если тебе не нужно передавать параметры в событие, то да.

Автор: Keeper89 12.5.2011, 12:58
Цитата(Snowy @  12.5.2011,  12:51 Найти цитируемый пост)
Если тебе не нужно передавать параметры в событие, то да. 

Пока не нужно, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)