События на явно не указанный контрол

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

События на явно не указанный контрол

Сообщение Calvin » 22.10.2004 (Пт) 10:31

Здраствуйте, уважаемые! Помогите с проблемой...вот есть форма, допустим с 30-ю TEXT-ми. Они не входят в массив элементов управления. Мне не хочется для каждого контрола прописывать процедуру обработки какого-либо события.....Можно ли неявно задать имя контрола в заголовке процедуры обработки событий и внутри ее...Можно ли сделать типа так?:
Код: Выделить всё
Set mycontrol=Text1          ' к примеру

Private Sub mycontrol_GotFocus()
mycontrol.text="aaa"
end sub
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.10.2004 (Пт) 11:02

А придется.
Либо выделяй контролы в массив, либо в каждом событии каждого контрола пиши:
Код: Выделить всё
...
Private Sub GlobalText_Change(Obj As Control)
  ...
End Sub

Private Sub GlobalText_GotFocus(Obj As Control)
  ...
End Sub

...

Private Sub Text1_Change()
  Call GlobalText_Change(Text1)
End Sub

Private Sub Text1_GotFocus()
  Call GlobalText_GotFocus(Text1)
End Sub


Можно еще что-то наподобии:
Код: Выделить всё
Option Explicit

Private WithEvents CustomText As VB.TextBox

Private Sub CustomText_Change()
  ...
End Sub

...

...
Set CustomText = Text1
...

Но в твоем случае это не подойдет.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.10.2004 (Пт) 11:16

надо использовать VBControlExtender

Код: Выделить всё
Option Explicit
Dim WithEvents objExt As VBControlExtender ' Declare VBControlExtender variable WithEvents

Private Sub LoadControl()
   Licenses.Add "Project1.Control1", "ewrinvcmcoe"
   Set objExt = Controls.Add("Project1.Control1", "myCtl")
   objExt.Visible = True ' The control is invisible by default.
End Sub

Private Sub extObj_ObjectEvent(Info As EventInfo)
   ' Program the events of the control using Select Case.
   Select Case Info.Name
   Case "Click"
      ' Handle Click event here.
   ' Other cases now shown
   Case Else ' Unknown Event
      ' Handle unknown events here.
   End Select
End Sub


Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 22.10.2004 (Пт) 13:12

2 Konst_One ну в общем я запускаю процедуру LoadControl

Код: Выделить всё
Private Sub Form_Initialize()
Call LoadControl
End Sub

а потом на строчке
Код: Выделить всё
   Licenses.Add "Project1.Control1", "ewrinvcmcoe"

начинает ругаться (я не понял, что этот код конкретно означает - можно пояснить?)
"Invalid class string......Looking for object with ProgID: Project1.Control1"
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.10.2004 (Пт) 13:15

Так добавляй VB.TextBox, а не Project1.Control1.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.10.2004 (Пт) 13:16

И, кстати, думаю в твоем случае эту строчку можно не указывать.
Lasciate ogni speranza, voi ch'entrate.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 22.10.2004 (Пт) 14:30

Нифига не понял...ничего не получается, все равно ругается :?
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.10.2004 (Пт) 15:04

Konst_One писал(а):надо использовать VBControlExtender

Или этот метод всё равно не позволяет обрабатывать события многих контролов, или я чего-то не понял.

Calvin, чем массив контролов-то не угодил?
Изображение


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

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

Сейчас этот форум просматривают: PetalBot и гости: 3

    TopList