Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с refresh grid'а / 5 сообщений из 5, страница 1 из 1
31.05.2007, 09:16
    #34563215
Pr0teus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с refresh grid'а
Никак не могу понять в чем проблема. Суть заключается в следующем. Есть grid, на колонки которого устанавливаются фильтры. Снятие фильтра осуществляется в методе clearfilter класса grid (текст метода см. ниже). Данный метод вызывается из двух мест, из toolbar'а и popup меню. При этом если он вызван из toolbar'а, то grid нормально обновляется, если же из popup меню, то нет (запись просто становиться на EOF()). Если же идти пошагово в Debug Mode то все нормально проходит.

Код toolbar'а
Код: plaintext
1.
2.
3.
IF VARTYPE(THISFORM.CurrentGrid) = "O" THEN
  THISFORM.CurrentGrid.ClearFilter()
ENDIF

Код popup меню
Код: plaintext
1.
2.
ON SELECTION BAR  5  OF submenufiltr loGrid.ClearFilter(loHeader)
ON SELECTION BAR  6  OF submenufiltr loGrid.ClearFilter()

Код ClearFilter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
LPARAMETERS loHeader

LOCAL loColumn, lcAlias, i, lcFilter,llDoIt,lcTableName, lnRecNo


WITH THIS
  m.lcAlias = ALIAS()
  m.llDoIt = .T.
  
 IF VARTYPE(m.loHeader) = "O"
    
    .ClearFilterTable(loHeader.Parent)  && очистка таблицы с фильтрами
    loHeader.Parent.Filtr_Value = ''    
    .Total_Filtr = .BuildFilterStr()         && построение нового фильтра

  ELSE

    * очистка всех фильтров
    IF EMPTY(.Total_Filtr) THEN
      m.llDoIt = .F.
    ELSE
      FOR m.i =  1  TO .ColumnCount
        .Columns[m.i].Filtr_Value = ''
      ENDFOR
    ENDIF
    .Total_Filtr = ''    

    * удаление записей из служебной таблицы
    m.lcTableName = UPPER(ALLTRIM(THIS.Name) + "_ExFilter")
    IF USED(m.lcTableName) THEN
      SELECT (m.lcTableName)
      DELETE ALL
    ENDIF

  ENDIF
  
  IF m.llDoIt THEN

    IF !EMPTY(.RecordSource) AND USED(.RecordSource)
          
      SELECT (.RecordSource)
      m.lcFilter = ALLTRIM(.Total_Filtr)
    
      IF EMPTY(m.lcFilter)
        SET FILTER TO
      ELSE
        SET FILTER TO &lcFilter
      ENDIF


      * почему-то из toolbar'а все обновляется и grid отображает все данные
      * а из popup меню grid не обновляется и запись ставится на EOF
      * хотя вызовы равнозначны  8 (
      GOTO TOP
     
    ENDIF

    .ShowAllPictureHeader()
    .Refresh()
    IF !EMPTY(m.lcAlias)
      SELECT (m.lcAlias)
    ENDIF

    .After_Set_Filter()
    .RefreshAggregate()
  ENDIF
ENDWITH
...
Рейтинг: 0 / 0
31.05.2007, 11:00
    #34563621
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с refresh grid'а
Есть такая проблема с фильтром на гриде.
Решается только переводом фокуса с грида и возвратом на него. Сообственно, когда вы делаете эту опреацию через Toolbar, фокус и "уходит" с грида. Аналогичная операция происходит и при работе с отладчиком.
Т.к. перевод фокуса с гридом не всегда желателен, то в класса я эту операцию не включал бы.
С уважением, Алексей
...
Рейтинг: 0 / 0
31.05.2007, 11:08
    #34563659
Pr0teus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с refresh grid'а
2 Aleksey-K

Поясните пожалуйста фразу, а то не догоняю что-то 8) :
Aleksey-KТ.к. перевод фокуса с гридом не всегда желателен, то в класса я эту операцию не включал бы.
...
Рейтинг: 0 / 0
31.05.2007, 13:36
    #34564520
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с refresh grid'а
А мне вот это пояснить

Aleksey-K Сообственно, когда вы делаете эту опреацию через Toolbar, фокус и "уходит" с грида.

поведение тулбара изменилось?
...
Рейтинг: 0 / 0
31.05.2007, 13:54
    #34564635
Pr0teus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с refresh grid'а
Что-то всем все надо объяснять 8)
Ладно, Aleksey-K в принципе все объяснил, но его совет я не допонял )))

P.S.
Grid кстати основан на классе Aleksey-K smartgrid, но с дополнительными модификациями. Все хочу выложить, но времени не хватает на рихтовку.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с refresh grid'а / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]