Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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) ???

может кто знает :((

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* I need HELP *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

                                 

Ответить

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

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



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 25.11.03 01:07

Слушай, может тебе такая штука подойдет, правда должна быть в Design Mode создана одна кнопка cmdBtn как образец, и нужно в Property для неё указать индекс 0. При этом автоматом создается массив кнопок и при запуске программы массив заполняется количеством кнопок, указанным в переменной цикла. И при этом у массива будет вполне цивильный Mouse_Move(Index as Integer), а если начальная кнопка мозолит глаза, то её можно задвинуть за пределы формы. Попробуй:

Private Sub Form_Load()
Me.Show
For i = 1 To 10
  Dim btn As CommandButton
  Dim iIndex As Integer
  iIndex = cmdBtn.Count 

  If iIndex <= 32767 Then 

    Load cmdBtn(iIndex)
    Set btn = cmdBtn(iIndex)
    With btn  
      .Left = cmdBtn(iIndex - 1).Left + 620
      .Caption = "" & iIndex + 1
      .Visible = True
    End With
    Set btn = Nothing
  End If

Next i
End Sub

Private Sub cmdBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Caption = Index
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.vbnet.ru
 Профиль | | #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-сайт: www.aliyev.us
 Профиль | | #6
Добавлено: 26.11.03 17:24

Используй свойство 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 |

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



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