Массив процедур - как?

  • Автор темы borisblade
  • Дата начала
B

borisblade

Гость
#1
Пример
имеется 10 кнопок - напротив каждой по два текстбокса
при нажатии батона число из первого текстбокса возводится в квадрат и попадает во второй тесктбокс
батоны и текстбоксы естессно в массиве
как сделать одну проыедуру, к кот. можно обратиться по индексу?
типа
button(i).click calls proc(i)
 
S

skysun

Гость
#2
в VB если создается массив котролов, то в обработчке события добавлется доп. параметр - индекс контрола - источника события.как сделать

одну проыедуру, к кот. можно обратиться по индексу?
типа
button(i).click calls proc(i)
А массив процедур в VB это скорее фантастика. такое если и можно то каким нибудь не естественным способом!!!
 

alex77755

Well-Known Member
15.02.2009
128
0
62
Украина Павлоград
#3
как сделать одну проыедуру
в процедуру proc(i) передаётся параметр (I)
Я думаю можно как-то так:

Код:
 Private Sub proc(i)
Select Case i
Case 1
'--------------------- код 1
Case 2
'---------------------код 2
Case 3
'------------------------код 3
end select
End Sub
Добавлено: Или просто упорядочить индексы тексбоксов
у исходных тексбоксов индексы совпадают с индексами кнопок. У получающих данные на 10 больше. И обойдёшься одной процедурой:

Код:
Private Sub Комманда1_Click(Index As Integer)
Текст1(Index + 10).Value =Val(Текст1(Index)).Value ^ 2
End Sub
Или второй массив текстбоксов с совпадающими индексами
Код:
Private Sub Комманда1_Click(Index As Integer)
Текст2(Index).Value =Val(Текст1(Index)).Value ^ 2
End Sub
 
B

borisblade

Гость
#4
То, что в процедуру можно подать аргументы, и так понятно
Вопрос вот в чем - если у меня кнопок 100? Для каждой писать
sub button1..100_click (...) handles button1 click
?
или можно как-то перечислить
For i=1 to 100
sub button(i)_click handles button(i) click
next i

кстати если я созданной мной переменной типа батон присваиваю существующий батон, как мне написать процедуру клика по батону?
sub my_button_click handles my_button click ?
так?
 

alex77755

Well-Known Member
15.02.2009
128
0
62
Украина Павлоград
#5
Или мы говорим на разных языках??
Для массива кнопок процедура одна!!

Код:
Private Sub Комманда1_Click(Index As Integer)

End Sub
ничего перечислять не надо. Зачем вызывать дополнительную процедуру? У тебя уже есть индекс нажатой кнопки
к нему и привязывайся в самой процедуре.
или ты хочешь программно нажать все кнопки?? тогда:

Код:
Private Sub Комманда2()
Dim i
For i = 0 To Комманда1.Count - 1
Комманда1_Click (i)
Next i
End Sub
А на каком языке, извините, писано:?
sub button(i)_click handles button(i) click
sub my_button_click handles my_button click ?
неужто VB