Страница: 1 |
Я создал массив объектов может кто знает :(( !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* I need HELP *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Слушай, может тебе такая штука подойдет, правда должна быть в Design Mode создана одна кнопка cmdBtn как образец, и нужно в Property для неё указать индекс 0. При этом автоматом создается массив кнопок и при запуске программы массив заполняется количеством кнопок, указанным в переменной цикла. И при этом у массива будет вполне цивильный Mouse_Move(Index as Integer), а если начальная кнопка мозолит глаза, то её можно задвинуть за пределы формы. Попробуй: Private Sub Form_Load() If iIndex <= 32767 Then Load cmdBtn(iIndex) Next i Private Sub cmdBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) Павел, почему же нереально? См.пример выше, создается полноценный массив со всеми свойствами массива, содержащий полноценные кнопки со всеми свойствами стандартных кнопок. Какие могут быть проблемы, а изучить .NET для того чтобы создать массив - это довольно круто. Если человеку так уж мешает первая кнопка, можно сделать ей Visible=False и всё. Всё работает и все красиво, зачем ещё и сабклассинг? Используй свойство Index элемента! Установи индекс первого равному нулю Index=0 Создай кнопку потом. Form_OnLoad () For i=1 to n Load Command1(i) Command1(i).top=Command1(i-1).top+120 'Имеется введу Twips а не Pixel ommand1(i).visible = true Next i Удачи Страница: 1 |
Вопрос: HELP! Хочу к объектам применить событие...КАК???
Добавлено: 24.11.03 21:58
Автор вопроса: Cooller
Dim a(100) As Object
l = l + 1
For l = 1 To 10
Set a(l) = Controls.Add("VB.CommandButton", "a" &
Trim$(Str$(l)))
a(l).Left = 200 * l
a(l).Visible = True
Next l
как применить к ним событие(например MouseMove) ???
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 25.11.03 01:07
Me.Show
For i = 1 To 10
Dim btn As CommandButton
Dim iIndex As Integer
iIndex = cmdBtn.Count
Set btn = cmdBtn(iIndex)
With btn
.Left = cmdBtn(iIndex - 1).Left + 620
.Caption = "" & iIndex + 1
.Visible = True
End With
Set btn = Nothing
End If
End Sub
Me.Caption = Index
End Sub
Номер ответа: 2
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #2
Добавлено: 25.11.03 09:52
Для единичного объекта выходом было бы объявление переменной на уровне
формы с ключевым словом WithEvents. Для массивов это не прокатит.
Могу предположить, что средствами VB6 это нереально. Вот в .NET это
очень просто!..
Попробуй использовать сабклассинг, хотя получится не очень красиво, но
работать будет.
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 25.11.03 20:51
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 26.11.03 09:27
To cresta: но это ведь совсем другое дело! Ему вроде нужно создать
массив динамически из кода, хотя, возможно, и этот вариант подойдёт.
Но если создавать контролы именно в коде, то события прикрутить я не
знаю как.
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 26.11.03 12:33
Безусловно, если именно динамически, то события не прилепить, но мне кажется, что человеку важна не столько динамика в чистом виде ради самой динамики, сколько нужен именно сам массив стандартных кнопок, создаваемый в RunTime
Номер ответа: 6
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #6
Добавлено: 26.11.03 17:24