Обновление буфер таблицы и записи в очереди

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Обновление буфер таблицы и записи в очереди

Сообщение StillZero »

Два связанных между собой вопроса:

1. При ThisWindow.Update не происходит обновление буфера таблицы и текущей выделенной записи в list-box-е. Хотя это я могу понять. Типо причем здесь ABC.
2. Есть метод брауза Action(LONG Control),LONG,VIRTUAL служит для enable/disable-а контролов.
Этот метод не вызывается при вызове PopupMenu, т.е. не вызывается при MouseRight.
На самом деле мне надо, чтобы этот метод вызывался при MouseRightUp. Само собой, на момент вызова метода буфер таблицы должен содержать актуальные данные.
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

да и пока обошелся таким кодом:

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

   ! обновляем запись перед показом PopupMenu
   IF EVENT()=EVENT:AlertKey
      IF FIELD()=?List
         CASE KEYCODE()
            OF MouseRightUp
            OROF ShiftF10
               GET(Queue:Browse,choice(?List))
               IF NOT ERRORCODE()
                  PC:PriceChangeID = Queue:Browse.PriceChangeID
                  ERR# = MAVGET(CS_PriceChanges)
                  BRW1:Browse.NewSelection()
               END
         END
      END
   END
и проверкой enable/disable на NewSelection, но это не гуд
Аватара пользователя
Admin
Администратор
Сообщения: 3961
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Подтверждаю слова Андрея.

Маленько опишу что у меня не получается...
Используем свой класс Popup вместо встроенного в вровз MAV
По MouseRightUp вызываем свой popup в котором настроен mimic на кнопки типа insert, change, delete. Но они не disabled в соответствии с правилами заданными в методе ... Action
пофиксить бы и обновление получить на мыло ... в смысле ссылку на обновление. :)

Заранее благодарю!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Обновление буфер таблицы и записи в очереди

Сообщение Andrew™ »

StillZero писал(а):Два связанных между собой вопроса:

1. При ThisWindow.Update не происходит обновление буфера таблицы и текущей выделенной записи в list-box-е. Хотя это я могу понять. Типо причем здесь ABC.
не знаю как ABC, но есть соответсвующий метод .NewSelection, он инициализирует буфер файла, ну естественно вызывается и на NewSelection и на AlertKey
StillZero писал(а):2. Есть метод брауза Action(LONG Control),LONG,VIRTUAL служит для enable/disable-а контролов.
Этот метод не вызывается при вызове PopupMenu, т.е. не вызывается при MouseRight.
На самом деле мне надо, чтобы этот метод вызывался при MouseRightUp. Само собой, на момент вызова метода буфер таблицы должен содержать актуальные данные.
он и содержит актуальные значения т к обработка MouseRight идёт уже после PARENT.NewSelection

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

BRW1:Browse.NewSelection                 PROCEDURE
 CODE
 PARENT.NewSelection
 CASE KEYCODE()
  OF MouseRight
   SETKEYCODE(0)
   SELF.PreparePopup
 END
ну конечно Блин, это разве не вызов:
SELF.Run_View = SELF.Popup.AddPos(SELF.Popup.GetText(?View),0,0,CHOOSE(SELF.Action(?View)=0,1,0),1)

судя по вопросам - дело всё в ручках, где то косяк в ручном кодировании или CYCLE в ACCEPT'е стоит и MAV:WindowManager.events() не отрабатывается, а он стоит в конце ACCEPT'а
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

StillZero писал(а):да и пока обошелся таким кодом:
см. ответ на пред. пост
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Admin писал(а):Подтверждаю слова Андрея.

Маленько опишу что у меня не получается...
Используем свой класс Popup вместо встроенного в вровз MAV
По MouseRightUp вызываем свой popup в котором настроен mimic на кнопки типа insert, change, delete. Но они не disabled в соответствии с правилами заданными в методе ... Action
пофиксить бы и обновление получить на мыло ... в смысле ссылку на обновление. :)

Заранее благодарю!
а чего фиксить то, если дело в ручках, тока сейчас понЯл в чём дело, Вы сами реализуете обработку AlertKey до штатной обработки MAVBrowse объекта, я уже писал что эта обработка идёт в конце ACCEPT'а в MAV:WindowManager'е

про вызов метода Action я тоже написал, вызывается он при конструировании POPUP элемента меню:

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

 SELF.Run_View = SELF.Popup.AddPos(SELF.Popup.GetText(?View),0,0,CHOOSE(SELF.Action(?View)=0,1,0),1)
хотите свою обработку оставить до базовой, на AlertKey вызовите BRW1:Browse.NewSelection - далее что угодно. чем не устраивает штатный POPUP так и не понял
Аватара пользователя
Admin
Администратор
Сообщения: 3961
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

чем не устраивает штатный POPUP так и не понял
Функционала мало. Свои шаблоны гораздо приятнее использовать.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

свои обработки горячих клавиш на Browse надо делать в соответсвующем EMBED'е - после PARENT.NewSelection, ну и естественно гасить этот клавишный код SETKEYCODE(0), чтобы штатный POPUP не отработался
Ответить