Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как запихать в комбобокс ссылку на контрол? Добавлено: 31.07.03 09:56  

Автор вопроса:  Nio | Web-сайт: www.fea.nxt.ru

Всем привет!

Народ, выручайте - вот такое дело: на форме лежат контролы, разных типов. Как можно запихать ссылку на этот контрол в комбобокс, чтобы при выборе ссылки можно было работать с конкретным контролом - программно ресайзить, переместить? Всем заранее спасибо!

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Nio



Вопросов: 15
Ответов: 115
 Web-сайт: www.fea.nxt.ru
 Профиль | | #1
Добавлено: 31.07.03 10:00
Да, кстати - контролы в массивах - массив Пикчербоксов, Лейблов, etc...

Ответить

Номер ответа: 2
Автор ответа:
 Malyav



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #2
Добавлено: 31.07.03 14:24

Я бы контролам каждого типа присвоил уникальное свойства 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

 

Примерно так же можно выбирать по имени или типу контрола

Ответить

Номер ответа: 3
Автор ответа:
 Nio



Вопросов: 15
Ответов: 115
 Web-сайт: www.fea.nxt.ru
 Профиль | | #3
Добавлено: 31.07.03 16:20

Ну, примерно так я и пробовал - нифига, смотри мой же вопрос "Почему" http://www.vbnet.ru/forum/show.asp?id=20758.

Кажется, идеальным вариантом была бы символическая ссылка, как например в С или PHP, чтобы переменная хранила имя другой переменной:

s=simv(p)

s=s+1' На самом деле генерируется p=p+1

Вот только как такую функцию simv на VB реализовать... :(

Ответить

Номер ответа: 4
Автор ответа:
 Malyav



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #4
Добавлено: 01.08.03 09:17

Вот что у меня получилось

Option Explicit

Private Sub Combo1_Click()
Dim C As Control
Dim sName As String
Dim iNum As Integer

For Each C In Controls
    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

Private Sub Form_Load()
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

End Sub

На форме 4 массива: Text, Label, Command и OptionButton ну и конечно комбобокс. Вроде работает.

Ответить

Номер ответа: 5
Автор ответа:
 Nio



Вопросов: 15
Ответов: 115
 Web-сайт: www.fea.nxt.ru
 Профиль | | #5
Добавлено: 01.08.03 10:54

Спасибо, о таком способе я и не подумал... Я решил это по-другому - завёл ещё один комбобокс и отслеживал индекс:

If c1.Text = "Рисунок" Then
On Error Resume Next
  Pict(Val(c2.Text)).Top = Pict(Val(c2.Text)).Top - 1

elseif.... ...
End If
Твоё решение намного изящнее, спасибо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам