Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Отследить событие контрола в VBA Добавлено: 30.05.11 18:45  

Автор вопроса:  Андрей
Добрый день. Подскажите каким образом отследить событие TextBox_Enter. На форме около 20-ти TextBox-ов и тупо писать код на каждый из них не совсем грамотно и громоздко... Заранее спасибо!

Ответить

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

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



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 31.05.11 02:00
Поставь у формы свойство KeyPreview = True, тогда события будут на форму перенапрвляться.

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 31.05.11 08:01
TextBox_Enter не будет, т.к. перенаправляются только нажатия клавиш.

Ответить

Номер ответа: 3
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #3 Добавлено: 31.05.11 12:06
Т.к в VBA не предусмотрена такая фишка, как индекс элементов, то можно выкрутиться динамическим созданием контрола, инкапсулированым в класс.
Например так:
  1.  
  2. 'модуль класса txtCls
  3.  Option Explicit
  4.  
  5. Public WithEvents txtBX As MSForms.TextBox
  6. Private Sub txtBX_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  7.     UserForm1.COMMON_KeyPress txtBX, KeyAscii
  8. End Sub
  9.  
  10. ' модуль формы UserForm1
  11. Dim objTxtCls(5) As New txtCls ' пять текстбоксов на форме
  12.  
  13. Public Sub COMMON_KeyPress(txbx As MSForms.TextBox, ByVal KeyAscii As MSForms.ReturnInteger)
  14.     Debug.Print txbx.Name
  15. End Sub
  16.  
  17.  
  18. Private Sub UserForm_Initialize()
  19. Dim i As Integer
  20. Dim ctl As Control
  21. For i = 0 To UBound(objTxtCls)
  22.     Set ctl = Controls.Add("forms.textbox.1", "textbox" & i)
  23.     ctl.Left = i * 50
  24.     Set objTxtCls(i).txtBX = ctl
  25. Next
  26. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Андрей



Вопросов: 1
Ответов: 1
 Профиль | | #4 Добавлено: 31.05.11 15:53
Спасибо!!! Попробую.

Ответить

Страница: 1 |

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



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