powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с refresh grid'а
5 сообщений из 5, страница 1 из 1
Проблема с refresh grid'а
    #34563215
Pr0teus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу понять в чем проблема. Суть заключается в следующем. Есть 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
Проблема с refresh grid'а
    #34563621
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая проблема с фильтром на гриде.
Решается только переводом фокуса с грида и возвратом на него. Сообственно, когда вы делаете эту опреацию через Toolbar, фокус и "уходит" с грида. Аналогичная операция происходит и при работе с отладчиком.
Т.к. перевод фокуса с гридом не всегда желателен, то в класса я эту операцию не включал бы.
С уважением, Алексей
...
Рейтинг: 0 / 0
Проблема с refresh grid'а
    #34563659
Pr0teus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Aleksey-K

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

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

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

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


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