Страница: 1 |
Всем привет! Народ, выручайте - вот такое дело: на форме лежат контролы, разных типов. Как можно запихать ссылку на этот контрол в комбобокс, чтобы при выборе ссылки можно было работать с конкретным контролом - программно ресайзить, переместить? Всем заранее спасибо!
Я бы контролам каждого типа присвоил уникальное свойства Tag=1,2,3 и т.д. соответственно положению контрола в комбобоксе При выборе пункта из комбобокса можно так Dim C as Control dim i as integer For each C in controls if C.Tag=2(индекс пункта в комбобоксе) then i=C.index (индекс контрола в массиве) if i=5 then C.left=100 end if next Примерно так же можно выбирать по имени или типу контрола Ну, примерно так я и пробовал - нифига, смотри мой же вопрос "Почему" http://www.vbnet.ru/forum/show.asp?id=20758. Кажется, идеальным вариантом была бы символическая ссылка, как например в С или PHP, чтобы переменная хранила имя другой переменной: s=simv(p) s=s+1' На самом деле генерируется p=p+1 Вот только как такую функцию simv на VB реализовать... Вот что у меня получилось Option Explicit Private Sub Combo1_Click() For Each C In Controls Private Sub Form_Load() End Sub На форме 4 массива: Text, Label, Command и OptionButton ну и конечно комбобокс. Вроде работает. Спасибо, о таком способе я и не подумал... Я решил это по-другому - завёл ещё один комбобокс и отслеживал индекс: If c1.Text = "Рисунок" Then elseif.... ... Страница: 1 |
Вопрос: Как запихать в комбобокс ссылку на контрол?
Добавлено: 31.07.03 09:56
Автор вопроса: Nio | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #1
Добавлено: 31.07.03 10:00
Да, кстати - контролы в массивах - массив Пикчербоксов, Лейблов, etc...
Номер ответа: 2
Автор ответа:
Malyav
ICQ: 8440085
Вопросов: 15
Ответов: 117
Web-сайт:
Профиль | | #2
Добавлено: 31.07.03 14:24
Номер ответа: 3
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #3
Добавлено: 31.07.03 16:20
Номер ответа: 4
Автор ответа:
Malyav
ICQ: 8440085
Вопросов: 15
Ответов: 117
Web-сайт:
Профиль | | #4
Добавлено: 01.08.03 09:17
Dim C As Control
Dim sName As String
Dim iNum As Integer
sName = Combo1.List(Combo1.ListIndex)
sName = Mid$(sName, 1, Len(sName) - 2)
iNum = CInt(Right(Combo1.List(Combo1.ListIndex), 1))
If CStr(C.Name) = sName Then
If iNum = C.Index Then C.Left = 200
End If
Debug.Print sName
Next
End Sub
Dim C As Control
On Error Resume Next
For Each C In Controls
If C.Index >= 0 Then Combo1.AddItem C.Name & "-" & C.Index
Next
Номер ответа: 5
Автор ответа:
Nio
Вопросов: 15
Ответов: 115
Web-сайт:
Профиль | | #5
Добавлено: 01.08.03 10:54
On Error Resume Next
Pict(Val(c2.Text)).Top = Pict(Val(c2.Text)).Top - 1
End If
Твоё решение намного изящнее, спасибо!