Автор: 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;