Автор: ZoranM
Дата сообщения: 14.07.2008 17:33
Добрый день, всем.
Я столкнулся со сле дующей проблемой:
использую cxScheduler и cxScheulerStorage из devExpress 6.22.
У cxScheulerStorage на событиях Insert, Udsate, Deleted висят обработчики.
1. При добавлении новых событий программно, они не отображаются в шедулере вообще, хотя ошибок не выдает. Ставлю эти свойства в НИЛ, добавляю события, возвращаю обработчики - все работает. в версии компонента 1.2 этот код работал нормально. С версии 1.3. уже не работает.
Но это пол беды.
2. При редактирвании событий программно данные на экране не меняются. Перебрал все методы, которые могут их обновлять - ничего не получается. Но обработчики работают и данные сохраняются в БД. Если их потом каждый раз грузить программно, то ваыдается эксепшен на обращение к несуществующему указателю.
Собственно вся проблема сводится к обновлению данных. Почему внесенные изменения в Storage не отображаются в шедулере.
Обработчик события:
Код:
rocedure TARDSchedulerFrame.cxSchedulerStorageEventModified(Sender: TObject;
AEvent: TcxSchedulerEvent; var AHandled: Boolean);
begin
inherited;
if IsRefresh then
begin
AHandled := True;
Exit;
end;
{}
if IsInsert then
AHandled := True
else
begin
try
UpdateEventInDB(AEvent, 'U');
AHandled := True;
except
{ error message }
AHandled := False;
cxScheduler.FullRefresh;
end;
end;
// RefreshDefault; - если это добавить, то данные обновляются но вылетает ошибка
{ - если это то все вроде работает, но думаю то не лучшее решение Придется все свойтсва переносить ручками.
if cxScheduler.SelectedEventCount = 1 then
begin
cxScheduler.SelectedEvents[0].Start := AEvent.Start;
cxScheduler.SelectedEvents[0].Finish := AEvent.Finish;
end;
cxScheduler.Repaint;
//Кстати перерисовка идет все равно только после клика по компоненту. Хотя это наверно можно решить...
}
end;