Как прописать Refresh Browse?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Подскажите как обновить отображение Browse, при изменении данных в базе (Refresh)?
У меня как то очень криво, хотелось бы попроще!
Гость

Сообщение Гость »

ResetFromBuffer
Гость

Сообщение Гость »

!Обновить окно списка после изменения данных
BRW2.ResetSort(1)

BRW может иметь другой номер, это надо посмотреть в свойствах процедуры.
Гость

Сообщение Гость »

Если ABC шаблоны, то метод ResetFromView

Из камасутры:
Use ResetFromView when you want to reset for any changes
that may have happened to the entire record set, such as new
records added or deleted by other workstations.
Написал: TonyR(5)
Гость

Сообщение Гость »

Если для ШВС, то могу предложить пример организации кнопки "Обновление
таблицы"
на тулбаре. В файле LibSrc\TplEqu_r.clw вставьте строку типа

FsBrowseRefresh EQUATE(2604)

Для полного счастья можно включить поддержку этих контролов в визарды.

Код: Выделить всё

#!==========================================================================
==========
#CONTROL(FsBrowseRefreshFrame,'Контрол для обновления Browse на
Frame'),WINDOW
#!==========================================================================
==========
  #RESTRICT,WHERE(UPPER(%ProcedureTemplate)='FRAME')
  #ENDRESTRICT
  CONTROLS

BUTTON,AT(,,16,14),USE(?FsBrowseRefresh,FsBrowseRefresh),DISABLE,FLAT,TIP('О
бновить таблицу'),ICON('Refresh.ico')
  END
#AT(%WindowOtherEventHandling)
CASE ACCEPTED()
   OF FsBrowseRefresh
       POST(EVENT:Accepted,ACCEPTED(),SYSTEM{Prop:Active})
       CYCLE
END
#ENDAT
#!
#!==========================================================================
=======
#CONTROL (FsBrowseRefreshBrowse, 'Контрол для обновления
Browse'),REQ(BrowseBox(Clarion))
 CONTROLS
   BUTTON('Обновить'),AT(,,57,14),USE(?FsBrRefresh),HIDE
 END
#!==========================================================================
=======
#ATSTART
 #DECLARE (%ButtonRefresh)
 #FOR (%Control), WHERE(%ControlInstance = %ActiveTemplateInstance)
   #SET (%ButtonRefresh, %Control)
 #ENDFOR
#ENDAT
#!
#LOCALDATA
Loc:BrowseRefreshAct     Long     !активный browse
Loc:BrowseRefreshEnable  Byte !флаг установки активности контрола в frame
#ENDLOCALDATA
#!
#AT(%WindowOtherEventHandling,%ActiveTemplateParentInstance)
  if Loc:BrowseRefreshAct=%ActiveTemplateParentInstance
    IF ACCEPTED()=FsBrowseRefresh THEN
      POST(EVENT:ACCEPTED,%ButtonRefresh)
    END
  end
#ENDAT
#!
#AT
(%AcceptLoopBeforeFieldHandling,%ActiveTemplateParentInstance),PRIORITY(5000
)
  if event()=EVENT:SELECTED
     if field()=%ListControl
        Enable(FsBrowseRefresh)
        Loc:BrowseRefreshEnable=1
        Loc:BrowseRefreshAct=%ActiveTemplateParentInstance
     else
        if Loc:BrowseRefreshEnable=0
           Disable(FsBrowseRefresh)
        end
     end
  end
#ENDAT
#AT
(%AcceptLoopBeforeFieldHandling,%ActiveTemplateParentInstance),PRIORITY(5001
)
    Loc:BrowseRefreshEnable=0
#ENDAT
#!
#AT (%ControlPostEventHandling, %ButtonRefresh, 'Accepted')
    %InstancePrefix:RefreshMode = RefreshOnPosition
    DO %InstancePrefix:RefreshPage
#ENDAT
Вячеслав Черников <support@finsoft.ryazan.ru>
Написал: ClaList(2)
Ответить