Re[9]: Создание формы из воздуха (WSH)
От: Другаков Александр Россия  
Дата: 26.05.04 13:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Если не жалко — можно РАБОЧИЙ пример?

Давай мыло — вышлю...

А вообще смысл такой...
1. Можешь попробовать создать объект MS Forms Frame в ActiveX Control Test Container. В режиме Design (свойство DesignMode = True )
появляется еще и Toolbar с контролами, которые можно перетаскивать на frame. При отключенном режиме Design получаем рабочий run-time
frame.
2. Я сделал на ATL-проект ActiveX компонента, вставил в него ATL-объект Dialog и в это окно поместил ActiveX c progid — Forms.Frame.1 . В интерфейсе создал свойство для возврата IDispatch от Forms.Frame.1 и метод для показа этого диалогового окна.
3. Вот код скрипта:
'Dim objWord
'Set objWord = WScript.CreateObject("Word.Application")

'objWord.ShowVisualBasicEditor = True

'Dim objVBE
'Set objVBE = objWord.VBE

'Dim objVBComp
'Set objVBComp = objVBE.ActiveVBProject.VBComponents.Add(vbext_ct_MSForm)

'Set objForm = objVBComp.Designer

Set objFF = WScript.CreateObject("TestATLForms2.Forms2.1")

Set objForm = objFF.Frame 'WScript.CreateObject("Forms.Frame.1")

With objForm
.Caption = "MyForm"
.DesignMode = True
End With

Set objLabel = objForm.Add ("Forms.Label.1", "MyLabel", True)
With objLabel
.Caption = "Label"
.Top = 10
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With

Set objTextBox = objForm.Add ("Forms.TextBox.1", "MyTextBox", True)
With objTextBox
.Text = "TextBox"
.Top = 40
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With

Set objComboBox = objForm.Add ("Forms.ComboBox.1", "MyComboBox", True)
With objComboBox
.Text = "ComboBox"
.Top = 70
.Left = 10
.Width = 200
.Height = 20
.Enabled = True
End With

'For Each objCnt In objForm.Controls
' MsgBox objCnt.Name
'Next

'objWord.ShowVisualBasicEditor = False
'objVBE.CommandBars("Run").Controls("Run Sub/UserForm").Execute
objFF.DoDialog

Set objForm = Nothing
Set objLabel = Nothing
Set objTextBox = Nothing
Set objComboBox = Nothing
WScript.Quit

Хотелось бы знать для чего вся эта бадяга ? Может есть другие более простые пути решения проблемы ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.