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

Вниз

Проблема передачи указателя на объект в сообщении   Найти похожие ветки 

 
Navi ©   (2004-03-14 15:06) [0]

Уважаемые мастера! Есть проблема. Обявлен тип сообщения:

const
 WM_DATACHANGED = WM_USER + 1;

type
 TWMDataChanged = TMessage;

Есть модуль данных DM, в нем несколько объектов TDataSource. Вешаю им обработчик на
OnDataChange:

procedure TDM.DataSourceDataChange(Sender: TObject; Field: TField);
begin
 if not (Sender is TDataSource) then Exit;
 SendNotifyMessage(Application.MainForm.Handle, WM_DATACHANGED, 0, Integer(@Sender));
end;

В главной форме обрабатываю:

procedure TMainForm.WMDataChanged(var Msg: TMessage);
var
 DS: TDataSource;
begin
 DS:= TDataSource(Pointer(Msg.LParam));
 if (DS = nil) or not Assigned(DS) then Exit;
 if (DS.DataSet = nil) or not Assigned(DS.DataSet){.FieldDefs = nil} then Exit;
 if DS.DataSet.FieldDefs = nil then Exit;
 Field:= DS.DataSet.Fields.FindField("Sign"); <- ЗДЕСЬ возникает Access violation.
 Msg.Result:= -1;  
end;

Что сделано не так?


 
Тимохов ©   (2004-03-14 15:11) [1]


>  SendNotifyMessage(Application.MainForm.Handle, WM_DATACHANGED,
> 0, Integer(@Sender));

@ нафиг


 
oleg_art   (2004-03-14 15:22) [2]

SendNotifyMessage(Application.MainForm.Handle, WM_DATACHANGED, 0, Integer(Sender)

Посмотри реализацию функции FindControl в Forms.pas


 
Navi ©   (2004-03-14 15:32) [3]

To Тимохов & oleg_art: спасибо! Получилось!



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
1-1079281660
RomeoGolf
2004-03-14 19:27
2004.04.04
Динамические массивы, 6 версия


1-1079527534
Inimeg
2004-03-17 15:45
2004.04.04
EIBInterBaseError - что это такое


14-1078898161
Труп Васи Доброго
2004-03-10 08:56
2004.04.04
Непонятки с принтером


6-1075125258
nesovsemlamer
2004-01-26 16:54
2004.04.04
Передача изображения рабочего стола по протоколу TCP


3-1078923508
Vit
2004-03-10 15:58
2004.04.04
Как сделать многострочный текст в отчете