Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизПроблема передачи указателя на объект в сообщении Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.07 c