All Forums
 Категория Visio
 Форум Вопросы и ответы
 Запрос введения параметров
Previous Page
Author Previous Topic Topic Next 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

Не работает, ессно.
Go to Top of Page

Евгений

88 Posts

Posted - 01/10/2005 :  14:13:41
И кроме всего как из обработчика кнопки формы получить ссылку на саму форму? Ведь после нажатия "ОК" стоило бы форму закрыть...
Go to Top of Page

Евгений

88 Posts

Posted - 01/10/2005 :  14:38:47
Не получается сделать даже через модуль. Соорудил довольно запутаную структуру вызовов, а и так runtime-ошибка.. "#NAME?"

Может, где-то есть пример? Ведь это базис в использовании форм.
Go to Top of Page

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 такое было)
Go to Top of Page

Евгений

88 Posts

Posted - 01/10/2005 :  16:14:45
Огромное спасибо, теперь все замечательно работает!

Кстати, я все-таки использовал модуль, т.к. не знал, как обратиться к this-форме из обработчика кнопки, чтобы ее закрыть. А в модуле сделал экземпляр формы, ее же и закрыл.
Go to Top of Page

Евгений

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 не вызывается.
Go to Top of Page

Евгений

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 = "". Как бы еще добраться до нужного окна?..
Go to Top of Page

Евгений

88 Posts

Posted - 01/13/2005 :  16:11:16
Причем кол-во окон не зависит от того, высвечено ли окно Custom Properties или нет. Значит, его нет в том списке, который мы просматриваем...
Go to Top of Page

Евгений

88 Posts

Posted - 01/13/2005 :  16:35:33
Нашел решение, просто у меня одновременно открыто окно ShapeSheet для некого шейпа, вот Application.Windows(1) возвращает его :)
Go to Top of Page

Евгений

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

Теперь наоборот - оно ВСЕГДА находит окно пропертей, даже если их нет на экране... Значит, оно есть всегда, но не всегда визибл.
Go to Top of Page

Евгений

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
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/13/2005 :  19:07:12
Ну вот, опять неправильно подсказал :(
Хорошо хоть на мысль натолкнул...
Go to Top of Page
Previous Topic Topic Next Topic  
Previous Page
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)