События для динамических объектов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MacII
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.02.2004 (Сб) 13:20

События для динамических объектов

Сообщение MacII » 21.02.2004 (Сб) 13:29

Народ!!! Хэлм ми, если это вообще возможно...
Сколько уже форум перерыл нигде не найду ответа:
Я создаю динамически заране неизвестное кол-во конролов (имаджей) с разными именами, но как мне указать, что на клик по такому объекту я хочу выполнение такой-то процедуры? Для всех этих объектов будет юзаться одна и таже процедура, не понятно только как сказать, чтоб по событию ОнКлик на таких объектах вызывалось именно то что мне надо.

Вариант - заранее написать тучу процедур_ОнКлик будет вариантом "Б", хотся чего-то более рационального и оптимального, заранее спасибо

PS контролы создаю с помощью Form1.Controls.Add "VB.Image", nameHex, Form1.imgmap '

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 21.02.2004 (Сб) 14:17

А не проше ли через Load контролы загружать?
Они в массиве будут, следить будешь по Index :wink:.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

MacII
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.02.2004 (Сб) 13:20

Сообщение MacII » 21.02.2004 (Сб) 16:54

Ок, я не знаю как через лоад, но сейчас в нете поищу....

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 21.02.2004 (Сб) 20:18

Добавь кнопку Command1 с Index = 0

Код: Выделить всё
Sub Form_Load()
Command1(0).Caption = Chr(Int(100 + 5 * Rnd))
For i = 1 To 5
Load Command1(i)
Command1(i).Visible = True
Command1(i).Top = Command1(i - 1).Top + Command1(i - 1).Height
Command1(i).Caption = Chr(Int(32 + (255 - 32) * Rnd))
Next
End Sub

Sub Command1_Click(Index As Integer)
Select Case Index 'выбираешь, какая кнопка была нажата
Case 0 'если с индексом 0, то
'операторы только для кнопки 0

Case 1 'если с индексом 1, то
'операторы только для кнопки 1

Case 2 'если с индексом 2, то
'операторы только для кнопки 2

Case 3 'если с индексом 3, то
'операторы только для кнопки 3

Case 4 'если с индексом 4, то
'операторы только для кнопки 4

Case 5 'если с индексом 5, то
'операторы только для кнопки 5

End Select
MsgBox "Кнопка - " & Index & "; Caption = " & Command1(Index).Caption
End Sub
Нет меня больше

MacII
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 21.02.2004 (Сб) 13:20

Сообщение MacII » 22.02.2004 (Вс) 3:30

Большое спасибо. Я понял идею и переделал под свои нужды, сейчас всё работает. :D

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 22.02.2004 (Вс) 16:40

Так же можно объект создавать как экземпляр другого объекта, например, форму:
Код: Выделить всё
Sub Command1_Click()
Dim NewForm As New Form1
Set NewForm = New Form1
NewForm.Visible=True
End Sub

При этом, все события, элементы управления (а также их события) (если они там были) сохраняются.
Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList  
cron