обновление cxDBTreeList раз в секунду
    , cxDBTreeList
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    обновление cxDBTreeList раз в секунду
    , cxDBTreeList
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Всем привет!  
        
      Помогите пожалуйста нормально обновить данные в cxDBTreeList. у меня при каждом обновлении скрол перемещается к выделенной строке, что ужасно мешает. ![]() Как сделать чтобы скрол не оставался на месте? все красиво получается с cxGrid1DBTableView1: ![]() ![]() void __fastcall TForm3::Timer1Timer(TObject *Sender) { cxGrid1DBTableView1->BeginUpdate(); Query->DisableControls(); int i = Query->RecNo; Query->Active = 0; Query->Active = 1; if(i >= 0) Query->RecNo = i; Query->EnableControls(); cxGrid1DBTableView1->EndUpdate(); } но почему то не выходит с cxDBTreeList!  | 
    
| 
         
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          С cxDBTreeList не работал, но... 
        
      Это прикол: Цитата ra6xqp @  у меня при каждом обновлении скрол перемещается к выделенной строке, что ужасно мешает.  ![]() Как сделать чтобы скрол не оставался на месте? ? Вы же сами запоминаете индекс текущей записи в i, и потом устанавливаете курсор в эту позицию: ![]() ![]() if(i >= 0) Query->RecNo = i; Что вам нужно? Установить курсор в начало или в конец? Тогда: ![]() ![]() Query->First(); // в начало (срабатывает по умолчанию) Query->Last(); // в конец  | 
    
| 
         
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Неет... Курсор надо оставить на месте.  
        
      Проблема возникает при прокрутке списка, когда курсор выходит за рамки видимой области. Добавлено В случае с cxGrid1DBTableView1 клиент смотрит на таблицу, прокручивает его скролом вверх и вниз(не важно где курсор) и параллельно обновляются данные в таблице, раз в секунду. все работает красиво. то же самое я пытаюсь сделать с cxDBTreeList..  | 
    
| 
         
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Если правильно понял, то вам нужно получить текущие координаты скрола и потом, после установки курсора, восстановить эти самые координаты. Но, вообще-то, это криво как-то. В любом случае, скрол будет "прыгать", т.к. количество записей может меняться. К этой задаче нельзя подойти иным способом, чтобы не пришлось городить огород?   
        
       | 
    
| 
         
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          да... Ты правильно понял. Но скрол не будет прыгать, т.к. количество записей не меняется. Меняется только значения ячеек.   
        
       | 
    
| 
         
         
         
          
           Сообщ.
           #6
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Работать со скроллбаром можно так: 
        
      ![]() ![]()     int iPos;     iPos = GetScrollPos(dbgGrid->Handle, SB_VERT);     SetScrollPos(dbgGrid->Handle, SB_VERT, iPos + 5, true); Но устанавливать так позицию для TDBGrid смысла нет, так как сами данные не прокручиваются в этом случае.  | 
    
| 
         
         
         
          
           Сообщ.
           #7
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          GetScrollPos и SetScrollPos почему-то ни как не реагирует. Get возвращает 0 
        
      хотя это все равно не помогло бы.  | 
    
| 
         
         
         
          
           Сообщ.
           #8
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
         Цитата ra6xqp @  GetScrollPos и SetScrollPos почему-то ни как не реагирует. Get возвращает 0 Вполне возможно, они сами создают скроллбар и работают с ним. Цитата ra6xqp @  хотя это все равно не помогло бы.  Покопайтесь в свойствах компонента. Может что-нибудь найдёте.  | 
    
| 
         
         
         
          
           Сообщ.
           #9
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          ладно... гора к магамеду не идет.. давайте наоборот... 
        
      как определить границы видимой части таблицы? индекс первой строчки и индекс последней сточки видимой части? что бы потом передвинуть курсор в видимую часть, если он из нее выйдет.  | 
    
| 
         
         
         
          
           Сообщ.
           #10
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          неужели ни кто не сможет помочь?  
        
          |