BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Как передать параметр из пользовательской формы в спецфункцию?

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как передать параметр из пользовательской формы в спецфункцию?
 
БЭСТ 5 3.4 модуль Кадры
Уважаемые разработчики и консультанты, помогите пожалуйста с решением проблемы.
В плагине требуется выдавать запрос на ввод пользователем некоторых дат. Так как модуль основан на Win-интерфейсе, хотелось бы сделать соответствующую пользовательскую форму. Смотрели примеры xHarbour\plugins.bws, но там только простые формы. Как организовать передачу параметров из формы в плагин и обратно?
 
Речь идет о штатной экранной форме в новых окнах ?
 
Цитата
nordk пишет:
Речь идет о штатной экранной форме в новых окнах ?

Пользовательская форма, самостоятельно разработанная для плагина.
По методике: BestXBA.Справочное руководство - Порядок создания пользовательской формы, вызываемой из режима спецфункций.
Изменено: ОАО КРССУ - 24.11.2011 03:27:43
 
Цитата
ОАО КРССУ пишет:
передачу параметров из формы в плагин и обратно

Тогда мне вот это непонятно.
Зачем для такой формы еще какой-то плдагин ?
А нельзя все как-то объединить ?
В bws вы можете собрать целую библиотеку плагинов и обменивайтесь через переменный на здоровье чем котите.

МОжет как-то на примере ?
То ли Вопрос жутко примитивный и непонятно что может быть непонятно :)
То ли я никак понять не могу: что требуется
 
Цитата
nordk пишет:
МОжет как-то на примере?

Задача примерно такая. Пользователь запускает плагин. Выдается диалоговое окно (или форма) на ввод даты начала и окончания расчета. Затем выдается Вопрос на корректировку справочника, если положительно, то форма редактирования справочника. В конце обработки форма просмотра сформированной базы и диалог записи в файл.

Цитата
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 (дополнено)
 
Цитата
ОАО КРССУ пишет:
Действительно можно попробовать уместить все в одной форме.

Делаете форму диадлога
делаете форму вторую
Пишете в тексте все как Вам надо по работе с формами.

Цитата
ОАО КРССУ пишет:
Где бы пример посмотреть?

В самом БЭСТе
Работа задачи договоров Program Files\best\Best5_34\Client\Source\xHarbour\Contract_cls.bws

Все кнопки и формы пробуйте настраивать через инспектор в настройке формы.
А Код Выполнения по кнопке уже по событию на Click и т.п.
 
Спасибо 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 (дополнено)
 
Цитата
ОАО КРССУ пишет:
3. Есть объект xbOpenDialog, как его вызвать? Можно ли трансформировать его в xbSaveDialog для сохранения файла?

С этим разобрались, делается аналогично Delphi или С++ Builder:
Код
if ::OpenDialog1:Execute
         FName := ::OpenDialog1:FileName
 endif

Интересно, все объекты сделаны по аналогии с языками высокого уровня?
 
Прошу прощения - работал на выставке.
Цитата
ОАО КРССУ пишет:
Как взаимосвязаны программы/модули (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 - ставиться кнопке Отмена
В "простой форме" - оно не задействовано
Другими словами прочитали и забудьте эти свойства :lol: Для Вас только 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
:happiness:
 
Цитата
ОАО КРССУ пишет:
терминальном режиме

В терминальном режиме у меня один BDLL на всех.
Я его просто кладу и все :)

Цитата
ОАО КРССУ пишет:
А в "Приложениях пользователя" работать будет?

Нет.
Считайте что непосредственно в exe прописаны определенные формы для этого и все.
 
Скажите, nordk, а как вызвать модальную форму через RunForm?
 
Пятый параметр lModal
 
Цитата
nordk пишет:
Пятый параметр l Modal

Спасибо, nordk, помогло. Жаль описания параметров функции RunForm в документации нет.
 
FUNCTION RunForm(nm, lVisible, aParams, oParent, lModal, nVM, bParentWindowState)
 
Цитата
nordk пишет:
FUNCTION RunForm(nm, lVisible, aParams, oParent, lModal, nVM, bParentWindowState)

Спасибо за предоставленную информацию. Вот еще бы расшифровку и было бы пользователям проще, например:
nm - имя запускаемой формы
Visible - видимость формы (True, False)
aParams - массив передаваемых параметров (в форму или из формы?)
oParent - ссылка на объект-родитель
Modal - модальность формы (True, False)
nVM - ???
bParentWindowState - режим открытия (Normal = ?, Maximized = ?, Minimized = ?)
Страницы: 1
Читают тему (гостей: 1)