Страница: 1 |
Я создал массив объектов может кто знает :(( !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* I need HELP *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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) Павел, почему же нереально? См.пример выше, создается полноценный массив со всеми свойствами массива, содержащий полноценные кнопки со всеми свойствами стандартных кнопок. Какие могут быть проблемы Используй свойство 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
Слушай, может тебе такая штука подойдет, правда должна быть в Design Mode создана одна кнопка cmdBtn как образец, и нужно в Property для неё указать индекс 0. При этом автоматом создается массив кнопок и при запуске программы массив заполняется количеством кнопок, указанным в переменной цикла. И при этом у массива будет вполне цивильный Mouse_Move(Index as Integer), а если начальная кнопка мозолит глаза, то её можно задвинуть за пределы формы. Попробуй:
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
, а изучить .NET для того чтобы создать массив
- это довольно круто. Если человеку так уж мешает первая кнопка, можно сделать ей Visible=False и всё. Всё работает и все красиво, зачем ещё и сабклассинг?
Номер ответа: 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