Apico Soft / АПИКО Софт



Спонсором блога ScalaHelp.RU является компания АПИКО Софт.

Мы предоставляем:
- Качественный ERP консалтинг.
- Внедрение и сопровождение системы.
- Российские формы первичных документов, бухгалтерская и налоговая отчетность.

- Разработка корпоративной отчетности.

Наш телефон 8 (495) 961 98 48
Сайт http://www.apicosoft.ru/

Позвоните нам, мы сделаем все, чтобы помочь Вам.

четверг, ноября 29, 2007

iScala VBA: Встроенные формы

Чаще всего при создании новой формы средствами VBA используют стандартные компоненты. В результате форма выглядит достаточно инородно:

В составе Scala идет набор своих компонентов - туннелированные компоненты, позволяющих встраивать VBA приложения без всяких швов. Сделаем простейшую форму.

  1. Создаем новое VBA приложение Tunneling: Tools -> VBA Developer -> Project Explorer. New Project. Set Active для нового приложения.
  2. Идем в среду разработки: Tools -> VBA Developer -> Visual Basic Editor
  3. Добавляем новую форму.
  4. Идем в Tools -> References и добавляем ссылку на ScaXVBProxies 1.0 Type Library
  5. На палитре компонентов Toolbox щелкаем правой клавишей мыши и выбираем Additional Controls. Отмечаем все ScaXVB* компоненты. Получится что-то вроде этого:
  6. Бросаем на форму ScaXVBForm. Он должен присутствовать на любой форме, где используются туннелированные компоненты.
  7. Рисуем фому, используя только скальские компоненты. Добавляем кнопку закрыть с кодом ScaXVBForm1.DelayUnload
  8. Добавляем событие ScaXVBForm1_OnScaReady. В этом событии нужно заполнить все заголовки на форме. Дело в том, что вы не сможете сделать это в дизайнере, т.к. по идеологии таких приложений они должны читать все строки из LAN-файлов. По уму и нужно создать пользовательский LAN-файл и читать строки оттуда, но для простоты я сделал это в коде.
  9. Добавляем кнопку для запуска (в меню добавляется аналогично):

Получаем стандартную встроенную форму:

Код примера.

' Файл UserForm2

Private Sub scaXVBButton1_OnScaClick()
ScaXVBForm1.DelayUnload
End Sub

Private Sub ScaXVBForm1_OnScaReady()
scaXVBLabel1.Caption = "Some Label 1:"
scaXVBLabel2.Caption = "Some Label 2:"
scaXVBLabel3.Caption = "Some Label 3:"
scaXVBButton1.Caption = "Close"
End Sub

' Файл ProjectMacros

Sub RunUserForm2()
UserForm2.ScaXVBForm1.Connect ThisProcess, scaXVBDockedForm
UserForm2.ScaXVBForm1.Show
End Sub

Комментариев нет:

Отправить комментарий