Author |
Topic |
Евгений
88 Posts |
Posted - 01/10/2005 : 14:00:36
|
Я делаю так: Private Sub OK_Click() Dim shpTable As Visio.Shape Set shpTable = ThisDocument.Pages.Item(1).Shapes.ItemFromID(0) shpTable.Cells("Prop.Parmecs_member").Formula = parmecs_member.Text shpTable.Cells("Prop.Table_name").Formula = table_name.Text shpTable.Cells("Prop.Box").Formula = box.Text shpTable.Cells("Prop.Hld").Formula = Hld.Text shpTable.Cells("Prop.Owner").Formula = Owner.Text End Sub Не работает, ессно. |
|
|
Евгений
88 Posts |
Posted - 01/10/2005 : 14:13:41
|
И кроме всего как из обработчика кнопки формы получить ссылку на саму форму? Ведь после нажатия "ОК" стоило бы форму закрыть... |
|
|
Евгений
88 Posts |
Posted - 01/10/2005 : 14:38:47
|
Не получается сделать даже через модуль. Соорудил довольно запутаную структуру вызовов, а и так runtime-ошибка.. "#NAME?"
Может, где-то есть пример? Ведь это базис в использовании форм. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 01/10/2005 : 15:34:30
|
Так у Вас почти все работает :) runtime-ошибка.. "#NAME?" часто появляется из-за неправильного использования строк при работа с ячейками шейп-листа. В данном случае надо добавить кавычки
shpTable.Cells("Prop.Box").Formula = Chr(34) & Box.Text & Chr(34)
А как закрыть форму, я уже показывал
Unload UserForm1 (Это у нее Name такое было) |
|
|
Евгений
88 Posts |
Posted - 01/10/2005 : 16:14:45
|
Огромное спасибо, теперь все замечательно работает!
Кстати, я все-таки использовал модуль, т.к. не знал, как обратиться к this-форме из обработчика кнопки, чтобы ее закрыть. А в модуле сделал экземпляр формы, ее же и закрыл. |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 15:59:12
|
Alert! Не работает насильное показывание окна пропертей при открытии-создании документа! Код:Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Dim Flag As Boolean
Flag = False
For Each wi In Application.Windows(1).Windows
If InStr(1, wi.Caption, "Custom Properties") > 0 Then
MsgBox "Document Opened - custom props window found!"
Flag = True
Exit For
End If
Next
If Not Flag Then
MsgBox "Document Opened - custom props window not found!"
Application.DoCmd (1658)
End If
Module1.table_show
End Sub Всегда высвечивает, что не нашло окна. Необъявление Flag as Boolean ничего не меняет. Может надо искать среди других окон? Может у этого окна caption получается по-другому?
ЗЫ. Document_Document_Created не вызывается. |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 16:06:31
|
Сделал так:
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Dim Flag As Boolean
Flag = False
For Each wi In Application.Windows(1).Windows
MsgBox wi.Caption
If InStr(0, wi.Caption, "Custom") > 0 Then
MsgBox "Document Opened - custom props window found!"
Flag = True
Exit For
End If
Next
If Not Flag Then
MsgBox "Document Opened - custom props window not found!"
Application.DoCmd (1658)
End If
Module1.table_show
End Sub Из запуска этого следует, что во всех случаях wi.caption = "". Как бы еще добраться до нужного окна?.. |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 16:11:16
|
Причем кол-во окон не зависит от того, высвечено ли окно Custom Properties или нет. Значит, его нет в том списке, который мы просматриваем... |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 16:35:33
|
Нашел решение, просто у меня одновременно открыто окно ShapeSheet для некого шейпа, вот Application.Windows(1) возвращает его :) |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 16:48:00
|
Гм. Сделал так:
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Dim Flag As Boolean
Flag = False
For Each bigWi In Application.Windows
If bigWi.Caption = ThisDocument.Name Then
For Each wi In bigWi.Windows
If InStr(wi.Caption, "Custom Properties") > 0 Then
MsgBox "Document Opened - custom props window found!"
MsgBox wi.Caption
MsgBox bigWi.Caption
Flag = True
Exit For
End If
Next
Exit For
End If
Next
If Not Flag Then
MsgBox "Document Opened - custom props window not found!"
Application.DoCmd (1658)
End If
Module1.table_show
End Sub Теперь наоборот - оно ВСЕГДА находит окно пропертей, даже если их нет на экране... Значит, оно есть всегда, но не всегда визибл. |
|
|
Евгений
88 Posts |
Posted - 01/13/2005 : 16:55:05
|
Уфф. Если кого интересует, вот так работает, как надо:
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
For Each bigWi In Application.Windows
If bigWi.Caption = ThisDocument.Name Then
For Each wi In bigWi.Windows
If InStr(wi.Caption, "Custom Properties") > 0 Then
wi.Visible = True
Exit For
End If
Next
Exit For
End If
Next
End Sub |
Edited by - Евгений on 01/13/2005 16:56:29 |
|
|
Tumanov
Russia
1198 Posts |
Posted - 01/13/2005 : 19:07:12
|
Ну вот, опять неправильно подсказал :( Хорошо хоть на мысль натолкнул... |
|
|
Topic |
|