Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Объеденение разных * Sub *_Change(*)


Автор: kif 8.12.2006, 00:38
Короче тема такова: 
Есть несколько разных Private Sub 
К примеру:

Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
  Button.Enabled = True        Button.Enabled = True         Button.Enabled = True        Button.Enabled = True
End Sub                              End Sub                                 End Sub                              End Sub

Тык вот. Как их все объединить в одну. К примеру привязать к Button.Enabled как нибудь...
Какс-с-с?)

Автор: mihanik 8.12.2006, 09:02
Хм...
Немного непонятно...
Тут каждая процедура привязана к какой-нибудь конкретной кнопке?

Тогда создай на форме массив кнопок

И обработчик у тебя будет один...
Уточни немного условие...

Автор: JUmPER 8.12.2006, 14:29
не совсем понял (т.к. не телепат)

может стоит использовать св-во index  для контролов?

Автор: Kirill89 8.12.2006, 21:25
Да, похоже, сдесь лучше использвать массивы элементов управления.

Хотя можно и так:
Код

Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
  Button.Enabled = True        1_Change                                 1_Change                           1_Change
End Sub                              End Sub                                 End Sub                              End Sub

Но это глупо, если можно использовать массив.

Автор: kif 8.12.2006, 23:22
Неееее! Мне над именно объединить все Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
!!!!! Чтоб в коде была б только один Private Sub *_Change()   иль че нить типа этого. 
чтоб место многочисленных     
Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
  Button.Enabled = True        Button.Enabled = True         Button.Enabled = True        Button.Enabled = True            и т.п.
End Sub                              End Sub                                 End Sub                              End Sub
Был только один! Воть)) Если это реал кнешн. У меня в программе много Private Sub "Х"_Change() с одним и тем же  Button.Enabled = True ! И я хочу чтоб не мешало объединить все в одно условие!

Автор: Kirill89 9.12.2006, 00:26
Цитата(kif @ 8.12.2006,  23:22)
Неееее! Мне над именно объединить все Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
!!!!! Чтоб в коде была б только один Private Sub *_Change()   иль че нить типа этого. 
чтоб место многочисленных     
Private Sub 1_Change()      Private Sub 2_Change()       Private Sub 3_Change()      Private Sub 4_Change()
  Button.Enabled = True        Button.Enabled = True         Button.Enabled = True        Button.Enabled = True            и т.п.
End Sub                              End Sub                                 End Sub                              End Sub
Был только один! Воть)) Если это реал кнешн. У меня в программе много Private Sub "Х"_Change() с одним и тем же  Button.Enabled = True ! И я хочу чтоб не мешало объединить все в одно условие!

Я толком не понял чего ты хочешь! Покажи кусок программы. Да и всё равно, либо массив, либо одна для всех функция, либо api, но если тебе лень прописать несколько раз функцию, то про api забудь: там писать больше  smile 

Автор: kif 9.12.2006, 02:09
Код

Private Sub uglkast_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub uglmetdlin_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub ugor_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub ugsod_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub RaProf_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub rka_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub ska_Change()
  SaveMosk.Enabled = True
End Sub
Private Sub Snur_Change()
  SaveMosk.Enabled = True
End Sub


а мне над че нить типа 

Код

Private Sub uglkast_uglmetdlin_ugor_ugsod_RaProf_rka_Snur_ska_Change()
  SaveMosk.Enabled = True
End Sub


чтоб глаза не мазолило куча приват саб одинаковых практически.

Автор: Тутанхамец 9.12.2006, 08:21
Либо я что-то недопонял, либо это однозначно массив элементов управления. 

Делаешь массив элементов и сколько бы у тебя не было кнопок с именем Command1, они все будут при нажатии выполнять одну и ту же процедуру:

Код

Private Sub Command1_Click(Index As Integer)
savemosk.Enabled = True
End Sub


Различать кнопки одного массива можно по Index. Поищи на форуме про массивы элементов, тема часто поднималась. 

Автор: kif 9.12.2006, 13:43
неее. так не прокатит так как к каждому еще и другие определенные функции присваиваются. все если переименновать в один будет мягко сказать [censored 6]) ну лан не над уже. пускай так висят)

Автор: Alles 12.12.2006, 13:02
Я тотже что то толком не понял , что нужно то. ну может вот так .......хотя как в анекдоте варианов еще масса.....
Код

Private Sub Allcange()

Select Case CangeName
Case uglkast
    SaveMosk.Enabled = True

Case uglmetdlin
    SaveMosk.Enabled = True
    
Case ugor
 SaveMosk.Enabled = True

Case Else
    ' Ну и так далее скока тебе надо........
End Select

End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)