БЭСТ 5 3.4 модуль Кадры
Уважаемые разработчики и консультанты, помогите пожалуйста с решением проблемы.
В плагине требуется выдавать запрос на ввод пользователем некоторых дат. Так как модуль основан на Win-интерфейсе, хотелось бы сделать соответствующую пользовательскую форму. Смотрели примеры xHarbour\plugins.bws, но там только простые формы. Как организовать передачу параметров из формы в плагин и обратно?
nordk пишет:
Речь идет о штатной экранной форме в новых окнах ?
Пользовательская форма, самостоятельно разработанная для плагина.
По методике: BestXBA.Справочное руководство - Порядок создания пользовательской формы, вызываемой из режима спецфункций.
ОАО КРССУ пишет:
передачу параметров из формы в плагин и обратно
Тогда мне вот это непонятно.
Зачем для такой формы еще какой-то плдагин ?
А нельзя все как-то объединить ?
В bws вы можете собрать целую библиотеку плагинов и обменивайтесь через переменный на здоровье чем котите.
МОжет как-то на примере ?
То ли жутко примитивный и непонятно что может быть непонятно :)
То ли я никак понять не могу: что требуется
Задача примерно такая. Пользователь запускает плагин. Выдается диалоговое окно (или форма) на ввод даты начала и окончания расчета. Затем выдается на корректировку справочника, если положительно, то форма редактирования справочника. В конце обработки форма просмотра сформированной базы и диалог записи в файл.
Цитата
nordk пишет:
Зачем для такой формы еще какой-то плагин?
А нельзя все как-то объединить?
Действительно можно попробовать уместить все в одной форме.
Цитата
nordk пишет:
В bws вы можете собрать целую библиотеку плагинов и обменивайтесь через переменные на здоровье чем хотите.
А ведь правда, там же можно модули и формы в одном месте хранить и к ним обращаться в рабочей области.
Где бы пример посмотреть?
И еще в догонку:
Код
METHOD bButton1_Click(Sender) class myMainForm
LOCAL aShtat:= {{"CODE","N",10,0},;
{"SHORTNAME","C",25,0},;
{"CODECOND","C",7,0},;
{"CODEPROF","C",20,0},;
{"NAMEPROF","C",100,0},;
{"KOLVO","N",10,0}}
dbPush()
DBCREATE("c:\base\best5pro\shtat.dbf", aShtat)
dbpop()
::close()
RETURN .T.
Хотел перенести код из плагина прямо на кнопку в форме, результата нет. Читал уроки, вроде должно все работать, но ничего не происходит. Может nordk подскажете в чем проблема?
Изменено: ОАО КРССУ - 25.11.2011 06:19:45(дополнено)
Спасибо nordk за наводку к примеру, много очень полезной информации. Еще возникло несколько вопросов:
1. Как взаимосвязаны программы/модули (unit.prg) и формы (form.prg), можно ли вызывать их друг из друга?
На первом примере в БЭСТ5 как-то воспринимается информация, в договорах в основном работа с MetaBO. Конечно есть аналогия с современными объектно-ориентированными системами программирования (как в Visual Basic), но как, допустим в форме, обратиться к функции/процедуре написанной в модуле?
2. При компиляции проекта в BestIDE, в папке Client\Bin\Userlibs создается myform.bdll и в серверной части \Server\Data\Pro\userlibs тоже. Но при отладке программы файлы в клиентском каталоге запираются другими пользователями терминала, в результате чего проект при запуске из БЭСТ5 не обновляется. Приходится пользоваться программой Unlocker, чтобы перекомпилировать bdll. Может это связано с настройками проекта или терминальном режиме работы, посоветуйте решение?
3. Есть объект xbOpenDialog, как его вызвать? Можно ли трансформировать его в xbSaveDialog для сохранения файла?
4. У кнопки ModalResult, как грамотно настроить поведение формы в зависимости от значения? Выставление параметра ModalResult - mrCancel и CancelButton - bButton1 не влияет на закрытие формы, закрывает только ::close. Хотя в договорах наверное все работает.
Изменено: ОАО КРССУ - 29.11.2011 10:44:37(дополнено)
ОАО КРССУ пишет:
Как взаимосвязаны программы/модули (unit.prg) и формы (form.prg), можно ли вызывать их друг из друга?
Не надо друг из друга вызывать prg
Пишете в них функции, получается некая библиотека.
Если функции не STATIC то собственно они видны и ее достаточно подгрузить, чтобы ими пользоваться. И разумеется из разных prg этими функциями можно пользоваться.
ОАО КРССУ пишет:
При компиляции проекта в BestIDE, в папке Client\Bin\Userlibs создается myform.bdll и в серверной части \Server\Data\Pro\userlibs тоже. Но при отладке программы файлы в клиентском каталоге запираются другими пользователями терминала, в результате чего проект при запуске из БЭСТ5 не обновляется
для обновления клиентских мест есть механизм сервис-паков.
Кладете туда bdll и она обновится при старте на клиентском месте
ОАО КРССУ пишет:
У кнопки ModalResult, как грамотно настроить поведение формы в зависимости от значения? Выставление параметра ModalResult - mrCancel и CancelButton - bButton1 не влияет на закрытие формы, закрывает только ::close
Свойство ModalResult класса xbButton
используется только на формах с горячим вводом (Автотранспорт\ВВод маршрута, Договора\Ввод договора и т.д.)
значение mrOk - ставиться кнопке ОК
значение mrCancel - ставиться кнопке Отмена
В "простой форме" - оно не задействовано
Другими словами прочитали и забудьте эти свойства Для Вас только Close
nordk пишет:
Кладете туда bdll и она обновится при старте на клиентском месте
Это верно для доступа по клиент-серверному приложению. Интересно, можно как-то в терминальном режиме ограничивать пользователя на использование файлов bdll? При отладке программ очень неудобно, файлы все время запираются.
Цитата
nordk пишет:
Свойство ModalResult класса xbButton используется только на формах с горячим вводом (Автотранспорт\ВВод маршрута, Договора\Ввод договора и т.д.)
А в "Приложениях пользователя" работать будет?
Цитата
nordk пишет:
Другими словами прочитали и забудьте эти свойства smile:lol: Для Вас только Close
Код
Do while Empty(Memory)
Memory:=Read(::BestForum:Nordk:Post->::Form:ModalResult)
Clear(Memory)
Enddo
nordk пишет:
FUNCTION RunForm(nm, lVisible, aParams, oParent, lModal, nVM, bParentWindowState)
Спасибо за предоставленную информацию. Вот еще бы расшифровку и было бы пользователям проще, например:
nm - имя запускаемой формы
Visible - видимость формы (True, False)
aParams - массив передаваемых параметров (в форму или из формы?)
oParent - ссылка на объект-родитель
Modal - модальность формы (True, False)
nVM - ???
bParentWindowState - режим открытия (Normal = ?, Maximized = ?, Minimized = ?)