Там я пользуюсь так.
Есть блок кода, который отрабатывает при возникновении ошибки в понимании БЭСТа.
Поскольку он доступен, я могу его подменить на собственный блок кода.
Но он будет реагировать только на те ошибки, которые БЭСТ считает ошибками.
С другой стороны, если мне надо сделать игнорирование деления на ноль я подменив блок кода могу это сделать
TRY
xNet:=OleCreateObject('WinHTTP.WinHttpRequest.5.1')
CATCH
errorMsg("Обмен с сервером не доступен!")
lError:=.T.
END
IF lError
RETURN NIL
ELSE
xNet:SetTimeouts(0,0,0,0)
lError:=.F.
ENDIF
как видишь все банально - читаем документацию от винды :) Там все есть. Б5 тут ни причем, он просто может этим пользоваться
если речь именно про ошибку БЭСТа, то способы есть.
Если какие то собственные предполагаемые ошибки оператора,то FUNC2 может вернуть .F. (RETURN .F.)
И в FUNC1() это возвращенное значение тоже обработать
Ну или конструкцию BEGIN SEQU еще можно
Попробуйте плагин работа в реестре.
но только Вам надо найти ту область экрана. гд БЭСТ при смещении курсора не делает обновления.
Вот это будет сложно. Скорее всего нет таких пустот. Поле будет плагнином появляться на экране при нажатии стрелочек вправо-влево
Для того чтобы запускать плагин с новым или старым интерфейсом из своего пункта меню достаточно на конце строки, по которой этот пункт меню создается указывать "0" или "1"
Для того чтобы формы запускать из старых окон надо использовать RUNGRAYFROMBLUE()
Внудри накладной можно управлять списком, только не в момент создания, а в процессе ввода документа.
В БЭСТе много событий (точе запуска). Момент создания это момент открытия документа, он еще не формирует никаких списков,
а можно управлять шапкой.
А лучше всего самому создавать через объект.
Зависит от задачи
Нет. Запускается в планировщике сам БЭСТ с запуском конкретного модуля и указанием имени плагина который надо старотовать.
Как то так, точно не помню, нодо смотреть документацию, но совершенно точно что стартуете БЭСТ.
Никто Вам ядро БЭСТа не отдаст - это надо понимать, а без него полноценную программу Вам не сделать средствами БЭСТа
Еще раз последний.
Вы можете компилировать ТОЛЬКО для плагинов
А значит в планировщике вы будете стартовать БЭСТ а это уже библиотеки и из него только свой плагин
В лоб у вас ничего работать не будет
Если какой то функции нет.
Вы простым поиском в FAR находите ту BDLL в которой она есть и через LOADLIBRARY
И помните для старых окно один вид плагина, для новых другой и разный набор библиотек и функций
То, что поддерживается в старых окнах в новых может не работать и наоборот
Ниже уровнем, чем плагин в коде для виртуальной машины харбора на ядре, который собран в БЭСТе вам не откомпилировать и никаких иллюзий о самостоятельной программе
Функция LOADPATH автоматически подцепляется только в старых окнах. В новых ее нет, не будет и никакая библиотека Вам не поможет
А что он не скомпилировался ?
Вы будете плагин вызывать. а не полноценную программу компилируете.
Плагин вызывается из уже запущенной другой bdll и там нужные функции описаны.
Нужны ли они обязательно при компиляции ???
Я не заморачиваюсь этим никогда
Если чего то нет - подгружу нужную BDLL через LoadLibrary
Include в свойствах проекта надо прописывать.
Папка эта есть у всех поставляется вместе с БЭСТом всегда.
Никакие lib прикручивать не надо - вы же не исполняемый модуль собирает а плагин
Если я правильно понял вы хотите сделать свой справочник.
Для этого существует массив areferdata
В хелпе он нормально описан.
Стандартный файл разумеется там описан
еще вот сюда mem_refer.dbf гляньте
Откройте в отладчике переменную Ozakaz и посмотрите на содержимое строк.
Все свойства строки вы можете переопределять после ADDROW()
Это самое быстрое, что приходит на ум
function test1()
local dd
//altd()
dd:={|x| m->MyRecs:={},_PARTNER->(dbseek(upper(ain[7]))),nil}
//altd()
return dd
Что делает Ваша программа - присваивает блок кода в dd - думаю что с этой задачей функция прекрасно справляется :)))
А что Вам в ней требовалось ?
Код
function test1()
altd()
m->MyRecs:={}
Код
_PARTNER->(dbseek(upper(ain[7]),,"shortname"))
altd() // И вот тут смотрим - стоит ли запись в алиасе на нужной строке, если нет - то почему
return .T.
Предупреждаю сразу за проблемами Б4 гоняться не стану
Пишу наспех, потому сумбурно - согласен.
Я бы сделал свой временный файл или собственный массив, в который б складывал то, что собрал а когда
nNumber=nKolStrok передал бы это
Дальше зависит от способа передачи - если по HTTPS - это одно
Если в DLL это совсем другое и т.п.
Вы кстати там есть блока кода перед открытием справочника просто написать самостоятельно поиск нужной строки
Я вот только не помню последовательность - сначала этот блока кода а потом стандартный поиск или наоборот
В первом случае вы сами поиском на строку встали и все - немного криво, во втором случае не прокатит
не понимаю где вы запутались
будет свободное время напишу простой рабочий пример
Сейчас у нас идут переговоры ну на очень высоком уровне - пока нет времени совсем