Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB Addin / 1 сообщений из 1, страница 1 из 1
26.04.2004, 11:55
    #32496459
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB Addin
Данная процедура при открытии аддина прочесывает активную форму и составляет список контролов, у которых есть DataField
Private Sub ScanControls(c As VBControl)
Dim c2 As VBControl
Dim s As String
Dim li As ListItem
    On Error Resume Next
    For Each c2 In c.ContainedVBControls
        s = c2.Properties("DataField")
        If Err.Number = 0 Then
            Set li = ListView1.ListItems.Add(, c2.Properties("Name"), c2.Properties("Name"))
            li.SubItems(1) = s
            li.SubItems(2) = c2.Properties("Tag")
        Else
            Err.Clear
        End If
        ScanControls c2
    Next c2
End Sub


Все хорошо, пока она не натыкается на массив контролов, который воспринимает как один контрол. Массив от не массива отличается тем, что Properties("Index") у массива равно максимальному индексу этого массива, а у не массива -1. Драг и дропом бросаю на него поле из таблицы или вьюхи, чтобы DataField не писать ручками (почему лет 5 назад не додумался написать эту приблуду? столько потом времени сэкономил бы), соответственно код:
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim ss
Dim li As ListItem
Dim c As VBControl
    ss = Data.GetData(1)
    On Error GoTo errh
    Set li = ListView1.HitTest(TX, TY)
    li.SubItems(1) = ss
    li.SubItems(2) = txtTag.Text
    For Each c In VBInstance.SelectedVBComponent.Designer.ContainedVBControls
        If c.Properties("Name") = li.Text Then Exit For
        Set c = FindControl(c, li.Text)
        If Not c Is Nothing Then Exit For
    Next c
    c.Properties("DataField").Value = ss
    c.Properties("Tag").Value = txtTag.Text
errh:
End Sub

Однако, значения присваиваются только первому элементу массива. Может у кого есть мысли, как достучаться до произвольного элемента?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB Addin / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]