Обсуждение:Визуальное копирование ветви меню одного пользователя другому
0 (0)
Обсуждение:Визуальное копирование ветви меню одного пользователя другому ( Обсуждение примера 31.12.2003 12:23 )
5(1)Визуальное копирование ветви меню одного пользвателя другому.
-Две панели: меню-источник,меню-приемник с разной подсветкой развилок и листьев
-Навигация по вложенным узлам вниз и вверх. Ускоренное перемещение в корень меню.
-Копирование ветви со всеми подузлами без дублирования совпадающих узлов.
Совпадающие узлы определяются: для развилок - по имени имя приводится в нижний
регистр, ликвидируются "~", английские буквы, схожие по начертанию с русскими,
заменяются на русские; для листьев - по типу и номеру модуля.
Протокол копирования.
-Печать меню
-Сравнение меню
-Поиск узлов-дублей
08.01.2004
Добавлено удаление пункта меню по F8.
Изменены/добавлены управляющие клавиши:
ALT+F5 - Фильтр, F5 - копирование, F7 - печать
CTRL+F6 - поиск узлов-дубликатов, CTRL+F7 - сравнение меню
При копировании появился доп.выбор: копировать текущую ветку меню или все
текущие ветки.
В список пользователей теперь не попадают закрытые.
В список модулей попадают только те, которые имеются у источника.
Если приемник не имеет доступа к выбранному модулю, то его можно добавить
по запросу.
05.03.2004
Добавлено запоминание параметров копирования.
Исправлено удаление ветки.
09.03.2004
Добавлена синхронизация позиции другой панели в соответствие с текущей
насколько это возможно (Shift_F6).
При выборе нового приемника через ALT_F5 делается автоматическая синхро-
низация позиции (см.выше) для ускорения процесса многократного копирования.
11.03.2004
Добавлена возможность копирования с предварительной синхронизацией
с добавлением отсутствующих родительских узлов (CTRL_F5).
Добавлена возможность массового копирования с предварительной синхронизацией
с добавлением отсутствующих родительских узлов (SHIFT_F5). При этом возможен
выбор всех операционистов, выборочных, выборочных групп операционистов.
24.03.2004
Процедура сравнения меню теперь выводит только новые пункты меню.
25.03.2004
Поправлен поиск дублей. Ранее повторный поиск работал неправильно.
21.04.2004
Уточнен поиск совпадающих узлов при копировании. Теперь если для источника-
развилки найден приемник с тем же именем, но не развилка, то они будут
считаться разными узлами. Для системных листов добавлена доп.проверка на
совпадение названия. Т.е. системные листы с разными наименованиями будут
считаться разными узлами.
Добавлен выбор расположения приемника при запуске программы.
Добавлен выбор расположения источника и приемника по ALT_F5.
Месторасположение источника и приемника выведены на экран.
26.04.2004
Еще раз уточнен поиск совпадающих узлов при копировании. Для всех узлов
добавлен контроль на значение узла operparm.Parm. Для листов убран контроль
по имени.
Уточнена связка opermenu.dbt и operparm.dbt:
opermenu.iNumberPoint <-> operparm.iCaseItem
Для работы требуются две dbt-структуры:
Словарь: D:\rsbank\DBFile\OCB\DTB_OCB.DEF
Структура файла: uchar.rec (Для наложения на запись )
--------------------------------------------------------------------------
| Имя поля | Тип |Длина|Смещ.| Примечание |
|-----------------------|-------|-----|-----|----------------------------|
Uchar UCHR 1 0
------------------------------------------------------------------------
1
Ключи файла
--------------------------------------------------------------------------
|Номер| Имя поля | Флаги | Тип |Длина|Смещ.|Примечание |
|-----|-----------------------|----------|-------|-----|-----|-----------|
Словарь: D:\rsbank\DBFile\OCB\DTB_OCB.DEF
Структура файла: indexo.dbt (Внешний индекс )
--------------------------------------------------------------------------
| Имя поля | Тип |Длина|Смещ.| Примечание |
|-----------------------|-------|-----|-----|----------------------------|
Sort STRING 101 0
Nrec LONG 4 101
------------------------------------------------------------------------
105
Ключи файла
--------------------------------------------------------------------------
|Номер| Имя поля | Флаги | Тип |Длина|Смещ.|Примечание |
|-----|-----------------------|----------|-------|-----|-----|-----------|
0 Sort DM E ZSTRING 101 0
1 Nrec DM E INTEGER 4 0
Посмотреть пример
>> ОтветитьА словарь лениво было в пример добавить?(-) ( Sergey 31.12.2003 17:09 )
0(0)Not specified
>> ОтветитьСловарь большой, там много чего не по теме. Лениво две структуры ручками набить? (-) ( григ 05.01.2004 07:51 )
0(0)Not specified
>> ОтветитьДа нет, не лениво - уже набил (+). ( Sergey 05.01.2004 14:19 )
0(0)Просто уважаемому автору неохота две структурки заимствовать из одного словаря, и ВСЕМ (надеюсь - их будет много) пользователям придется этот словарь делать самим с текста :(.
>> Ответить
Хорошая утилита, спасибо(+) ( Sergey 08.01.2004 09:44 )
0(0)Предложения-
1. Если бы удалось включить пользователя-приемника "Все", то цены вообще бы не было утилите.
2. "Закрытых" пользователей можно было бы не включать в список.
3. После копирования ветки с большим количеством вложений статус-строка портится.
5. По умолчанию - утилита для копирования и по умолчанию же для файлеров копирование выполняется клавишей F5. Каждый раз почему-то нажимал ее :), а не F6 Work.
6. Может тогда уж добавить и F8Delete - тоже удобства бы прибавилось.
7. Глупая попытка скопировать ветку меню внутрь ее же (например и слева и справа мое меню, МВОДБ. Слева - корень, справа \Рубли. Копирую пункт "Рубли". Макрос начинает ругаться через минуту -
Error: переполнен стек интерпретации.Модуль opermenu.mac Строка 371. В меню создается бесконечное вложение типа \Рубли\Рубли\Рубли\Рубли\Рубли\Рубли\...
>> ОтветитьОК. Чуть попозже посмотрю. Отчетность. (-) ( григ 08.01.2004 10:41 )
0(0)Not specified
>> ОтветитьСделал все, что просил (+) ( григ 08.01.2004 14:39 )
0(0)08.01.2004
Добавлено удаление пункта меню по F8.
Изменены/добавлены управляющие клавиши:
ALT+F5 - Фильтр, F5 - копирование, F7 - печать
CTRL+F6 - поиск узлов-дубликатов, CTRL+F7 - сравнение меню
При копировании появился доп.выбор: копировать текущую ветку меню или все
текущие ветки.
В список пользователей теперь не попадают закрытые.
В список модулей попадают только те, которые имеются у источника.
Если приемник не имеет доступа к выбранному модулю, то его можно добавить
по запросу.
Насчет копирования ветки меню внутрь этой же ветку - да, в описанном случае будет бесконечный цикл. Надо подумать. Получается перед копированием надо сканировать источник на предмет запоминания всего (в т.ч. и все вложенные пункты), что нужно копировать, а уже потом по этим данным копировать. Некрасиво, тяжеловесно. Лучше по другому: копируем ветку меню в эту же ветку другого пользователя, а потом обновляем у первого по менюшке второго. И ничего в коде править не надо.
>> ОтветитьЕще лучше теперь, но хочется больше...(+) ( Sergey 08.01.2004 15:41 )
0(0)1.А копирование ветки или выбора пользователю "Всем" не получается, да?
2.Насчет предоставления доступа к модулю - я бы не делал этого. Получается, что пользователь, получивший возможность запустить макрос, получает и все админовские права на АБС. Тогда уж надо проверить - можно ли запустившему вообще меню формировать. Хотя, конечно, все относительно.
3. Теперь дошло до сравнения меню - мне кажется, что то что представлено - красиво, но неудобно. Нагляднее - 2 таблички - одна - чего нового, другая - чего нет (я такой макрос простенький выкладывал в примерах) и потом RStyle стал такими табличками патчи сопровождать. Или дополнить ими внизу отчета. Тогда совсем ясно станет - видно - где отличие и видно - какое.
>> ОтветитьЧем больше, тем лучше (+) ( григ 08.01.2004 16:36 )
0(0)1. При копировании выдается 3-й запрос: копировать текущую ветку (ту на которой стоим) или все ветки (выше текущей, текущую, ниже текущей). Т.е. если стоим в корне дерева, то при выборе "все", будут скопированы все корневые узлы.
2. Этот макрос вообще-то на админов и рассчитан, так что юзерам его давать не надо. А раз на админов, то автоматическое добавление буковки в person.dbt, экономит часть нашего бесценного времени :). С другой стороны - если у приемника этот модуль отсутствует, то можно и не давать ему ничего и меню не копировать.
3. Табличку я посмотрел - красивая табличка. Только я прожку писал как раз за тем, чтобы уйти от номеров, и перейти к наглядности. Да и для данной программы номера пунктов роли не играют. Визуально выбираешь откуда, куда, копируешь. Но вообще я подумаю в плане добавления такой таблицы. И над тем, лаконичнее сделать текущий отчет.
4. Еще круто было бы копировать меню сразу группе пользователей. Но это получится беспроблемно только для кореневых веток меню.
Да, я посмотрел твой пример. У нас немножко разные подходы. Твой - когда все меню чохом копируешь пусть даже с дублированием. Это удобно когда есть меню-образец и копирование идет аналогичным пользователям. А вот когда пользователи резко разные, да скопировать надо не все а кусок, удобнее визуальный подход (грубо говоря ткнул чего и куда копировать, а не с номерами разбираться). Хотя я подумаю над совмещением.
>> ОтветитьRe : (+) ( Sergey 08.01.2004 17:18 )
0(0)1.Я видел про копирование всего = классно. А выпрашиваю копирование ВСЕМ. Т.е - слева меню источника и выбранная ветвь(выбор) - а справа никого - "Все" (ну или еще лучше группы - тогда я смогу сам организовать группу такую) - и шарах им без разбору -тем, у кого модуль данный подключен. Т.е. -получается тогда мне жизнь - сказка . Хочу - одному, хочу всем скопирую, а потом удалю чего не надо...
2. согласен - просто уберем его подальше от греха. А то им можно чего хошь сделать при желании..
3. Ну да, номера не нужны - отлично. Ты тогда внизу сводочку дай, чтобы не вглядываться в дерево. А уж в каком виде сводка - с номерами или без - тебе решать.
>> ОтветитьПункт первый сделал (руки дошли) (+) ( григ 11.03.2004 09:04 )
0(0)05.03.2004
Добавлено запоминание параметров копирования.
Исправлено удаление ветки.
09.03.2004
Добавлена синхронизация позиции другой панели в соответствие с текущей
насколько это возможно (Shift_F6).
При выборе нового приемника через ALT_F5 делается автоматическая синхро-
низация позиции (см.выше) для ускорения процесса многократного копирования.
11.03.2004
Добавлена возможность копирования с предварительной синхронизацией
с добавлением отсутствующих родительских узлов (CTRL_F5).
Добавлена возможность массового копирования с предварительной синхронизацией
с добавлением отсутствующих родительских узлов (SHIFT_F5). При этом возможен
выбор всех операционистов, выборочных, выборочных групп операционистов.
Т.е. можно просто в левой панели встать на самый глубокий пункт (или выше - как нравится), нажать SHIFT_F5, выбрать нужных оперов, ответить один раз про параметры копирования, а далее прога сама переберет всех оперов, добавит им отсутствующие родительские узлы (а не все содержимое род.узлов) + выбранный узел со всем содержимым.
Пробуй.
Насчет сводки потом подумаю.
>> ОтветитьПопробовал - очень понравилось !(+) ( Sergey 11.03.2004 10:03 )
0(0)Есть замечания:
1. Если копировать всем (Shift+F5) - то после входа в меню параметров и потом отказа (ESC) уже надо этой клавишей ESC перебирать всех работников банка :-).
2. Если копировать всем, то прога не смотрит - есть у данного пользователя этот модуль в подключенных или нет - слепо копирует ему. Лучше бы проверяла...
3. Если выбрать "Выборочные операционисты" отметить кого-нибудь (или не отмечать) и потом нажать ESC, то появляется MsgBox("0") и больше ничего не делается...
4. Если выбрать"Выборочные группы" - тишина совсем ...
>> ОтветитьВсе поправил. Пробуй. (+) ( григ 11.03.2004 10:59 )
0(0)По п.4. - у меня работает. А у тебя группы юзеров заведены или нет?
>> ОтветитьМожет и работает, а я не знаю как :((+) ( Sergey 11.03.2004 11:35 )
0(0)Нажимаю Shift+F5, выбираю пользователй (или группы) клавишей Enter (крестики появляются). Потом чего надо нажать, чтобы копирование началось? Если Esc - выхожу из панели выбора и все - тишина...
Группы заведены...
Ты убрал проход по меню настроек при массовом копировании - теперь захотелось GetTrue(TRUE,"Вы действительно...); А то выбрал из меню - всем, а она как начала....:).
Еще одно мелкое - если при попытке выбрать новый фильтр Alt+F5 не дожать клавишу Alt, то самопроизвольно мухой копируется чего попалось в этот момент под выделенную строку :).
>> ОтветитьЕще раз поправил (+) ( григ 11.03.2004 12:16 )
0(0)Выборочные группы и выборочные пользователи: окончание выбора - нажать Enter на самом первом пункте в меню "ЗАВЕРШИТЬ ВЫБОР". Он еще красным выделен и большими буквами написан. А ESC - отказ от выбора.
По поводу ALT+F5 - я добавил запрос на копирование, который должен срабатывать, если уже был выбор параметров копирования и функция копирования вызывается сама, а не из другой функции. Клавиши лучше дожимать: сначала нажать ALT и держать, а потом жать F5. Иначе у тебя будут траблы и с CTRL+, SHIFT+ и т.д. Кстати по F6 можно вызвать список возможных действий - не надо будет комбинации клавиш использовать.
Пробуй теперь.
>> ОтветитьПопробовал - вкусно :-). ( Sergey 11.03.2004 14:52 )
0(0)В упор не видел надписи этой "Завершить выбор" - вот же. Что значит - традиционализм. Привык - меню открывается обычно первым пуктом, а сверху - заголовок. А у тебя - выбор. Работает, конечно, все.
Удобная утилита и всем администраторам RS продуктов ее рекомендую.
Только проверку на наличие подключенного пользователю модуля ты все равно почему-то не стал делать...
И про кнопки - как их жать - это ты зря :(. Я их, слава богу, давно жму....лет двадцать уж или больше...:).
>> ОтветитьНу вот, почти добили, отлично (+) ( григ 11.03.2004 15:24 )
0(0)Проверку я вроде сделал, даже потестил, там при массовом копировании в строке 853 стоит
/*проверяем есть ли у приемника доступ к выбранному модулю*/
if(index(person.szIdentProgram,StrFor(rpoiIdentProgram.MinValue))>0)
Т.е. если у юзера нет такого модуля, то он игнорируется.
И еще в фильтре при смене модуля переспрашивает, ну и в самом начале работы. Может мы про разные моменты говорим?
Про кнопки - извини, не прав, погорячился.
>> Ответитьда - точно - работает (+) ( Sergey 11.03.2004 16:01 )
0(0)Видимо я уже закружился в текучке - PERSON.DBT не поменял на нужный, что ли. Сейчас поменял и порядок.
Я думаю, вот новый РС уже буду твоей утилитой ставить. Другие не нужны больше..:-)
Да я не обижаюсь..чего там...Просто так это, привычка.. Работа у нас с тобой такая, что все учить пытаются...:).
>> ОтветитьДошли руки до поиска дублей Ctrl+F6(+) ( Sergey 15.03.2004 11:57 )
0(0)Там делается так: (+) ( григ 24.03.2004 12:32 )
0(0)Во первых, сравнение идет относительно текущего местоположения приемника и источника (т.е. не делается отработка в корень, а где стоим там и сравниваем). Во-вторых, ранее сравнение выдавало в отчет все пункты меню, старые и новые, выделяя новые словом "- новый пункт" и прекращая движение по этой ветке внутрь. Теперь я переделал - выводятся только новые пункты меню у источника. Отчет значительно сократился и стал более удобен. Плюсом я добавил печать признака системного модуля и номера модуля.
>> Ответитья не понял, обьясни тогда лучше :( ( Sergey 24.03.2004 14:52 )
0(0)почему поиск дубликатов (Ctrl+F6) не дает одинакового результата в первом пуске и последующих?
А сравнение намного лучше теперь - можно в этом виде уже и без таблички сводной обойтись:).
>> ОтветитьУ меня n-цать раз одно и то же. Как добиться такого бага? (-) ( григ 24.03.2004 15:28 )
0(0)Not specified
>> ОтветитьСкажи, чего посмотреть и я это сделаю... ( Sergey 24.03.2004 16:11 )
0(0)Приметы такие - с каждым пуском количество пунктов - "дубликатов" увеличивается на количество пунктов меню. файлы 1_номер.dbt и 2_номер.dbt в WorkFile тоже растут... Замена источника или приемника ничего не дают. Интересно - если сменить модуль, то названия выборов меняются. а количество дублей сохраняется огромным...Интуитивно - вроде дело в файлах 1_номер.dbt и 2_номер.dbt.
>> ОтветитьТеперь понял и исправил (-) ( григ 25.03.2004 12:22 )
0(0)Я ранее ковырял сравнение менюшек - там все гуд.
Теперь поправил поиск дублей.
25.03.2004
Поправлен поиск дублей. Ранее повторный поиск работал неправильно.
>> Ответитьвот теперь - другое дело...:-) (-) ( Sergey 25.03.2004 12:35 )
0(0)Not specified
>> Ответить
Еще нашел баг...уж извини :-) ( Sergey 09.04.2004 14:44 )
0(0)Взял 84-й РС, начал работать с меню твоим макросом. Вот что обнаружил -
у 9999 в МВОДБ появилась ветка "Картотека 1" . Раньше это был просто выбор на модуль 1118. Копирую ветку от 9999 к себе на выбор - вроде все ОК. Но увы - выбор не становится веткой. Дальше - ладно, думаю. Удаляю у себя этот выбор и копирую ветку. Все опять вроде ОК - появилась ветка. Но у 9999 в ней 2 выбора "К акцепту" и " Все документы", которые обращаются к одному модулю 1118. У меня в ветке появляется только 1 выбор, а в протоколе загадочная фраза "пункт меню обновлен + нет значения". Пытаюсь недостающий скопировать прямо в ветку - нет. Название выбора меняется и все... Вот такая штука :(.
>> ОтветитьКинь мне opermenu и operparm в архиве на greg@ezmail.ru, я посмотрю (-) ( григ 12.04.2004 08:02 )
0(0)Not specified
>> Ответитьлови (-) ( Sergey 12.04.2004 09:05 )
0(0)Not specified
>> ОтветитьЕще поправил (+) ( григ 21.04.2004 14:18 )
0(0)21.04.2004
Уточнен поиск совпадающих узлов при копировании. Теперь если для источника-
развилки найден приемник с тем же именем, но не развилка, то они будут
считаться разными узлами. Для системных листов добавлена доп.проверка на
совпадение названия. Т.е. системные листы с разными наименованиями будут
считаться разными узлами.
Добавлен выбор расположения приемника при запуске программы.
Добавлен выбор расположения источника и приемника по ALT_F5.
Месторасположение источника и приемника выведены на экран.
>> ОтветитьПопробовал - все ОК! (+) ( Sergey 21.04.2004 16:31 )
0(0)А ты чего-же, у RSTyle научился - делаешь, а не рассказваешь...:)
Гляжу - появилось F6\Переименовать ... А в новостях - не нашел.
Так, ну а еще нам надо (загибаю пальцы)....:))))...
1. Слабо у приемника сделать изменение порядка выборов...Типа - взял выбор, вырезал (CTRL+X) или скопировал (Ctrl+C) его в карман , потом пошел по дереву куда надо и там нежно так (CTRL+V) - раз...
С огромным уважением,
С.Лопухов.
>> ОтветитьЗабыл я про переименование (+) ( григ 22.04.2004 07:45 )
0(0)Сначала думал из-за имени у тебя копирование не идет, потому и сделал возможность переименовать просто для тестирования. Кстати, интересно узнать у разработчиков следующий момент: вот в 84 сборке "Картотека 1" содержит два конечных узла, причем оба системные и с одинаковым номером модуля, в operparm.dbt для них записей нет, различаются только наименованием: вроде "все документы" и "акцептованные". Как же интересно система определяет - весь список выводить или не весь?
Не слабо, но надо подумать. Попозжее. Тут более прикольные задачки имеются - ежедневные нормативы. Основное я написал, теперь надо всякие пользовательские функции реализовать: типа пассивы, истекающие в ближайшие 30 дней, инсайдеры, акционеры и пр. вещи, которые напрямую с баланса не взять. Но в целом мы уже считаем все, что надо посчитать.
>> ОтветитьЧего-то кажется параметры меню перестали копироваться в этома макросе..(+) ( Sergey 23.04.2004 11:42 )
0(0)у 9999 - есть, F5 жму - у меня - нет...
>> ОтветитьА они и раньше не копировались (+) ( григ 26.04.2004 09:11 )
0(0)Оказывается связка была неправильная:
26.04.2004
Еще раз уточнен поиск совпадающих узлов при копировании. Для всех узлов
добавлен контроль на значение узла operparm.Parm. Для листов убран контроль
по имени.
Уточнена связка opermenu.dbt и operparm.dbt:
opermenu.iNumberPoint <-> operparm.iCaseItem
Можно скачать свежую версию - проверить. Я по простоте душевной полагал, что связка идет по одноименным полям, оказалось - вигвам. В связи с этим снимается предыдущий вопрос разработчикам - действительно параметры обоих пунктов разные, соответственно и действие разное.
>> Ответитьimport clip; в DBTFUNC.MAC - где его взять (-)? ( Sergey 26.04.2004 10:19 )
0(0)Not specified
>> ОтветитьЭто длм-ка для работы с Clipboard-ом (+) ( григ 26.04.2004 10:35 )
0(0)Можно взять с http://support.softlab.ru/portal/Samples/sample.asp?ID=210
а можно просто убрать импорт.
>> Ответитьскачал на всякий случай clip :), и попробовал снова - ОК (-) ( Sergey 26.04.2004 10:56 )
0(0)Not specified
>> Ответить
Почему не работает визуальная часть? ( moleg 29.01.2004 05:54 )
0(0)Я пытаюсь запустить это пример. В самом начале все вроде нормально, но до того момента пока не вызываю MainForm.Show. В ранних версиях dtb постоянно выскакивет сообщение с "0" при прорисовке окна, скачал самую свежую версию dtb вообще виснет в этом месте.
Вещь очень полезная, но вот видимая часть dtb что-то у меня не работает. Может кто сталкивался с аналогичным, сам я обычно пользуюсь для таких случаев VCH.
>> ОтветитьВ dtb.d32 есть еще терминальные части: t_textgp.d32, t_textga.d32 (-) ( григ 29.01.2004 07:46 )
0(0)Not specified
>> ОтветитьRe:В dtb.d32 есть еще терминальные части: t_textgp.d32, t_textga.d32 ( moleg 29.01.2004 08:07 )
0(0)Спасибо, Григорий, за участие. Да не было t_textga.d32 в терминальной части(стоит наверное изменить readme в выложенной версии на lib.itb.ru, там про эту часть ничего не сказано ). Перезапустил все: аналогично, виснет на том же месте.
>> ОтветитьВот цитата из readme: (+) ( григ 29.01.2004 08:43 )
0(0).. Для использования библиотеки DTB.D32 необходимо:
1. Поместить файлы T_TEXTGP.D32 и T_TEXTGP.DLM на рабочую станцию в каталог
C:\TERMINAL...
У тебя в терминале лежит t_textgp.d32? Видимо нет, т.к. MsgBox(0) в этом случае и выдается. t_textga.d32 необязательна и используется в случае передачи пакованных пакетов (dtbPack).
А чего вешается - не знаю. Может у тебя структура оперлога отличается, может ты не добавил те две доп.структуры, о которых в макросе идет речь. Попробуй строчку с .Show закомментарь и посмотри результат.
>> ОтветитьВсе дело действительно в t_textgp.d32 ( moleg 29.01.2004 09:35 )
0(0)Если на терминале нет t_textgp.d32, то вылетает "0" и окно кое как прорисовывается, если же он есть, то программа виснет.
Если закоментировать .Show то программа естественно просто завершается.
Пробовал вообще убрать все компоненты на форме, результат прежний.
Ладно попробую как-нибудь по другому вывести это окошко, просто ужасно хочется победить и визуальную часть dtb.
Спасибо Григорий за помощь.
>> ОтветитьПопробуй вставить в начало (+) ( григ 29.01.2004 09:47 )
0(0)макроса dtbPack(true); , тогда будет использоваться t_textga.d32. Может быть тогда заработает.
>> Ответить
Что-то я не могу.... ( Boris 05.02.2004 15:43 )
0(0)файл создать index0.dbt - ругается что неверная длина ключа, как от этого избавится????
что надо поправить.....
>> Ответитьне index0, а indexo. Попробуй размер старницы поставить 2048 (-) ( григ 05.02.2004 15:46 )
0(0)Not specified
>> ОтветитьВсе разобрался - псиба Машковой Юле.... :-) ( Boris 05.02.2004 15:48 )
0(0)Not specified
>> Ответить
Ошибка при копировании пункта меню ( Freeman1 16.07.2004 16:17 )
0(0)Большое спасибо автору за полезный инструмент, но при его экплуатации возникли следущие трудности:
"Error: обращение за границу записи itemuser.dbt
Модуль ..\mac\bank\opermenu.mac
Строка 604",
"Источник: iNumberFather= 354 Name= Визуальное копирование меню
- пункт меню не найден"
Причем, часть меню копирует успешно, остальную - нет.
Чем это может быть вызвано?
>> ОтветитьВидимо твоя структура itemuser.dbt отличается от моей (+) ( григ 19.07.2004 09:16 )
0(0)В этом месте макроса находится функция, возвращающая имя пользовательского макроса (модули пользователей). Можешь вставить в нее первой строкой return "". А можешь разобраться со своей структурой и поправить функцию.
/*Вернуть имя макроса пользовательского пункта меню*/ macro MainForm_Macro(id) if(id.cSystemItem!="") return ""; end; if(id.iCaseItem==0) return ""; end; itemusercIdentProgram.Set(StrFor(id.iIdentProgram)); itemuseriCaseItem.Set(id.iCaseItem); if(itemuser.GetEQ) GetDirect(itemu,itemuser.GetPos); base=FldOffset(itemu,"Parm")+259; i=0; t=""; SetRecordAddr(Rec_UChar,itemu,i,base,true); while(Rec_UChar.UChar!=0) t=t+StrFor(Rec_UChar.UChar); i=i+1; SetRecordAddr(Rec_UChar,itemu,i,base,true); end; return "("+t+")"; end; return ""; end;
>> Ответить