Как получить префикс от Browse
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Как получить префикс от Browse
Всем знатокам! Здравствуйте!
Я пишу процедурку на С6.3 (создаю темплатку). Все уже почти работает, но столкнулся с проблемой, которую решить не могу.
Мне надо получить префикс Браузера.
Пока список в окне один - проблем нет, т.к. префикс первого и единственного списка ?List всегда BRW1:
А вот префикс второго ?List:2 уже может быт и BRW3:: и BRW5:: и ....... т.д.
Пишу стандартный код для данного случая:
#ATSTART
#DECLARE(%InstancePrefix)
#SET(%InstancePrefix,'BRW' & %ActiveTemplateInstance & ':')
#ENDAT
Но на выходе для первого списка вместо BRW1: - получаю BRW8:
А для второго списка вместо BRW5: - получаю BRW9:
------------------------------
Помогите горю, зарание спасибо!
Я пишу процедурку на С6.3 (создаю темплатку). Все уже почти работает, но столкнулся с проблемой, которую решить не могу.
Мне надо получить префикс Браузера.
Пока список в окне один - проблем нет, т.к. префикс первого и единственного списка ?List всегда BRW1:
А вот префикс второго ?List:2 уже может быт и BRW3:: и BRW5:: и ....... т.д.
Пишу стандартный код для данного случая:
#ATSTART
#DECLARE(%InstancePrefix)
#SET(%InstancePrefix,'BRW' & %ActiveTemplateInstance & ':')
#ENDAT
Но на выходе для первого списка вместо BRW1: - получаю BRW8:
А для второго списка вместо BRW5: - получаю BRW9:
------------------------------
Помогите горю, зарание спасибо!
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
Как получить префикс от Browse
а откуда такое утверждение??? Циферька зависит именно от %ActiveTemplateInstance, который содержит номера всех процедурных шаблонов в данной процедуре. Если у вас уже добавлены другие процедурные шаблоны то и нумерация будет идти от них...префикс первого и единственного списка ?List всегда BRW1
вот как создается префикс для броуза в станд шаблонах:
#CALL(%SetClassDefaults, 'Default', 'BRW'&%ActiveTemplateInstance, %BrowserType)
Как получить префикс от Browse
----------------------вот как создается префикс для броуза в станд шаблонах:
#CALL(%SetClassDefaults, 'Default', 'BRW'&%ActiveTemplateInstance, %BrowserType)
Хорошо! Префикс создался (в стандартном шаблоне)
Для ?List он у меня создался как BRW1
Для ?List:2 он у меня создался как BRW5
Как мне получить: %ActiveTemplateInstance = "1" для ?List
и Как мне получить: %ActiveTemplateInstance = "5" для ?List:2
В конечном итоге мне надо получить (написать) вот так:
#ATSTART
#DECLARE(%Prefix)
#SET(%Prefix,'BRW' & %ActiveTemplateInstance & ':')
#ENDAT
!====================================
%Prefix:LocateMode=LocateOnEdit
DO %Prefix:LocateRecord
DO RefreshWindow
SELECT(%ListControl)
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Как получить префикс от Browse
А можно вопрос? Зачем Вам именно "BRWXXX"? Лист без шаблона броуза не рассматривается?
Или Вы пишете шаблон, у которого родитель будет шаблон броуза? Тогда надо посмотреть как сделано в шаблоне "ViewButton" или "UpdateButtons".
Или Вы пишете шаблон, у которого родитель будет шаблон броуза? Тогда надо посмотреть как сделано в шаблоне "ViewButton" или "UpdateButtons".
We are hard at work… for you.
Как получить префикс от Browse
Именно так:Или Вы пишете шаблон, у которого родитель будет шаблон броуза?
Родительский шаблон - это шаблон Синявского для просмотра и редактирования файлов.
Я просматриваю два файла и хочу двигать записи в каждом файле вниз и вверх, т.е. менять позицию записи.
Для этого я под каждый файл "ручками" писал процедуру: "изменение позиции записи", мне это надоело и я решил написать темплатку, которая данную процедуру будет писать "сама". Я на каждый файл (список) добавляю нужные кнопки (мои кнопки) и их нажатие приводит мою процедуру в действие.
Но после того как запись встает на новую позицию мне надо передернуть (обновить) список.
Первый список (?list) я передергиваю вот так:
BRW1::LocateMode=LocateOnEdit
DO BRW1::LocateRecord
DO RefreshWindow
SELECT(?List)
Второй список (?list:2) я передергиваю вот так:
BRW5::LocateMode=LocateOnEdit
DO BRW5::LocateRecord
DO RefreshWindow
SELECT(?List:2)
!-------------------------------------------
Но чтобы это написать в Моей темплатке мне надо поиметь префиксы "1" и "5", которые соответствуют первому и второму списку, которые получились в Browse от стандартного шаблона Синявского.
Я думал что префиксы можно получить вот так:
#SET(%InstancePrefix,'BRW' & %ActiveTemplateInstance & ':')
Но на выходе для первого списка вместо BRW1: - получаю BRW8:
А для второго списка вместо BRW5: - получаю BRW9:
-----------------ingasoftplus писал(а): ↑25 Апрель 2021, 22:02 Циферька зависит именно от %ActiveTemplateInstance, который содержит номера всех процедурных шаблонов в данной процедуре.
Я вас понял! Скорей всего я получаю номера моих шаблонов, которые я сам и вставил в Browse.
Тогда сформулирую вопрос более грамотно:
Как получить номер "процедурного шаблона" для соответствующего списка, файла или очереди который получился в "данной процедуре".
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Как получить префикс от Browse
Если нужно получить номер родительского шаблона, то есть стандартный символ %ActiveTemplateParentInstance.
Например:
#SET(%FiltrPrefix,'Filtr'&%ActiveTemplateParentInstance)
Ну а внутри дочернего шаблона доступны символы, объявленные в родительском шаблоне.
Например, в дочернем шаблоне обращаемся к символу родительского шаблона:
DO %InstancePrefix:LocateRecord
Например:
#SET(%FiltrPrefix,'Filtr'&%ActiveTemplateParentInstance)
Ну а внутри дочернего шаблона доступны символы, объявленные в родительском шаблоне.
Например, в дочернем шаблоне обращаемся к символу родительского шаблона:
DO %InstancePrefix:LocateRecord
C6/C11, ШВС, tps/btrieve.
Как получить префикс от Browse
Ну что ж, продолжим:
Создал стандартный Броузер Синявского (С6.3) "для просмотра и редактирования файлов" с двумя файлами:
Получился ?List ,которому соответствует префикс BRW1:
и Получился ?List:2 ,которому соответствует префикс BRW5:
Пишу вот так:
#PROMPT('Список для обработки (?List)', FROM(%Control, %ControlType = 'LIST')), %ListControl, REQ
Выпадает список Списков и я выбираю или ?List или ?List:2
...... тут все "ОК"
Далее пишу вот так:
#DECLARE(%InstancePrefix)
#SET(%InstancePrefix,'BRW' & %ActiveTemplateInstance & ':')
На выходе: %InstancePrefix = BRW7:
Пишу вот так:
#SET(%InstancePrefix,'BRW' & %ActiveTemplateParentInstance & ':')
На выходе: %InstancePrefix = BRW0:
-------------------------------------------------
Ну и как мне получить BRW1: для ?List
Ну и как мне получить BRW5: для ?List:2
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Как получить префикс от Browse
Надо, чтобы броуз был родительским шаблоном. А Вы пытаетесь его в промпте выбрать.
#CONTROL(BrowseFiltr,'Фильтр для BrowseBox'),DESCRIPTION('Фильтр в таблице BrowseBox для ' & %Primary),REQ(BrowseBox(Clarion))
#CONTROL(BrowseFiltr,'Фильтр для BrowseBox'),DESCRIPTION('Фильтр в таблице BrowseBox для ' & %Primary),REQ(BrowseBox(Clarion))
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Как получить префикс от Browse
Если не про контрол, то надо курить #CONTEXT.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Как получить префикс от Browse
Сорри, не вник. Вам нужен контрол шаблон с 2 кнопками перемещения записей вверх и вниз. У меня есть такой, он достаточно навороченный. Цеплять надо к броузу через REQ, как я написал.
C6/C11, ШВС, tps/btrieve.
Как получить префикс от Browse
У меня начало вот такое:
#!CONTROL(New_Position_mpn, 'Смена позиции записи'), WINDOW, MULTI
#!===================================================================================================
#PROMPT('Список для обработки (?List)', FROM(%Control, %ControlType = 'LIST')), %ListControl, REQ
#!--------------------------------------------------------------
#PROMPT('File Name:', FILE), %PosFile, REQ
#!--------------------------------------------------------------
#PROMPT('Ключ сортирови позиции:', KEY), %PosKey, REQ
#!--------------------------------------------------------------
#ENABLE(%PosKey)
#PROMPT('Поле ключа с позицией:', COMPONENT(%PosKey)), %PosField, REQ
#ENDENABLE
#!----------------Временно как выход из ситуации --------------------------------------------
#PROMPT('BRW_Name:', @s4), %BRW, default('BRW1')
#!===================================================================================================
#ATSTART
#!-----------------------Не работает !!! --------------------------------------
#!DECLARE(%InstancePrefix)
#!SET(%InstancePrefix,'BRW' & %ActiveTemplateInstance & ':')
#!---------------------------------------------------------------------------------
Как получить префикс от Browse
------------------
У меня тоже получился навороченный. У меня три кнопки. Третья кнопка перехреначивает все позиции по порядку (это когда в позициях есть "дырки")
Может я вам весь текст сброшу? Я не профи я самоучка и многого просто не знаю.... я пишу на основе старых разработок, которые уже были написаны кем то до меня.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Как получить префикс от Browse
Не, не, у меня своих дел хватает. Вместо multi поставьте REQ(BrowseBox(Clarion)), а первый промпт не нужен.
C6/C11, ШВС, tps/btrieve.
Как получить префикс от Browse
Вот мое творчество, вдруг скучно будет когда нибудь!:
Все хорошо работает, но если найдете ошибки буду рад за совет.
*** - маленькая тонкость: Поле "Позиция сортировки" не любит "BYTE", так как при работе процедуры получаются отрицательные значения.
Поэтому поле "Позиция сортировки" должно быть "LONG"
Все хорошо работает, но если найдете ошибки буду рад за совет.
*** - маленькая тонкость: Поле "Позиция сортировки" не любит "BYTE", так как при работе процедуры получаются отрицательные значения.
Поэтому поле "Позиция сортировки" должно быть "LONG"
- Вложения
-
- Jsv_mpn.tpw
- (10.3 КБ) 110 скачиваний