Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Очень нужна помощь VBA+Excel Добавлено: 08.12.06 13:02  

Автор вопроса:  murrr
Здравствуйте, уважаемые!
Пожалуйста, помогите в решении следующих проблем:
1. Как узнать, загружена ли UserForm?
2. Как передать фокус и держать фокус на Text.Box немодальной UserForm (ShowModal=False).
Огромное спасибо!

Ответить

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

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 08.12.06 13:17
'--------------------------------------------------------------------------------
' Проект     :  OfflineClient
' Процедура  :  IsFormLoaded
' Описание   :  Возвращает загружена-ли форма
' Кем создан :  SNE
' Дата-Время :  07.11.2004-19:12:34
'
' Параметры  :  sFormName   - Имя формы
'--------------------------------------------------------------------------------
Public Function IsFormLoaded(ByVal sFormName As String) As Boolean
    Dim i_l As Integer
    For i_l = cNull To Forms.Count - vbNull
        If sFormName = Forms(i_l).Name Then IsFormLoaded = True: Exit Function
    Next
End Function

Ответить

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



Вопросов: 2
Ответов: 10
 Профиль | | #2 Добавлено: 08.12.06 13:47
Спасибо, Hacker!
Однако, как все просто, когда знаешь и не забыл.
А как с Проблемой 2?

Ответить

Номер ответа: 3
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #3 Добавлено: 08.12.06 14:08
Уважаемый Hacker!
Есть, оказывается проблема с предложенным тобой кодом, а именно - у меня почему-то напрочь отсутствует коллекция Forms. Что делать?

Ответить

Номер ответа: 4
Автор ответа:
 -=Fenix=-



Вопросов: 33
Ответов: 81
 Профиль | | #4 Добавлено: 08.12.06 19:50
2) TextBox2.focus если внутри формы
или если откуда-то ещё то UserForm.TextBox2.Focus

Ответить

Номер ответа: 5
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #5 Добавлено: 09.12.06 08:30
2) обработать: при переходе фокуса на другой объект, написать установку фокуса заново UserForm.TextBox2.setFocus

Ответить

Номер ответа: 6
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #6 Добавлено: 09.12.06 09:02
Спасибо, Fenix!
Спасибо, night_roll!
Но это работает только для модальной пользовательской формы (свойство ShowModal=True).
У меня же пользовательская форма немодальная (свойство ShowModal=False).
Загружаю ее кодом <UserForm.Show 0>.
SetFocus как не бымши.

Ответить

Номер ответа: 7
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #7 Добавлено: 09.12.06 09:32
Но это работает только для модальной пользовательской формы (свойство ShowModal=True)

' UserForm.ShowModal = False
' кидаем TextBox1
' кидаем TextBox2
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    TextBox1.SetFocus
End Sub

и всё работает !?

Ответить

Номер ответа: 8
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #8 Добавлено: 09.12.06 09:55
Спасибо, night_roll!
Но, если в случае
<UserForm.TextBox.SetFocus
 UserForm.Show 1> -
- фокус есть, то в случае
<UserForm.TextBox.SetFocus
 UserForm.Show 0> -
- фокуса нет.
Кстати, <UserForm.ShowModal = False> не работает.
Тут можно только <UserForm.Show 0>.

Ответить

Номер ответа: 9
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #9 Добавлено: 09.12.06 11:54
Это опять я!
Наверное, я чего-то (в смысле, ничего) не понимаю.
Если фокус установлен, то где тогда курсор в этом TextBox-е

Ответить

Номер ответа: 10
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #10 Добавлено: 09.12.06 12:02
Если фокус установлен, то где тогда курсор в этом TextBox-е
а какая разница где курсор! если фокус установлен, то ввод данных будет производиться в TextBox1 (см. код выше)

Ответить

Номер ответа: 11
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #11 Добавлено: 09.12.06 12:06
Кстати, <UserForm.ShowModal = False> не работает.
у тебя сказано выше, что это свойство, которое устанавливается при создании формы, но это сути не меняет.
отображение наличия фокуса на объекте(кнтроле) зависит от него самого, т.е. как у него это прописано :)

Ответить

Номер ответа: 12
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #12 Добавлено: 09.12.06 13:02
В курсоре и вся проблема - необходимо, чтобы в TextBox-е был курсор. Мне нужно обеспечить параллельный ввод и с клавиатуры, и кликом мыши.

Ответить

Номер ответа: 13
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #13 Добавлено: 09.12.06 13:45
ты напиши делом, что ты хочешь сделать (хотя бы на этом этапе)?
И что такое
Мне нужно обеспечить параллельный ввод и с клавиатуры, и кликом мыши
какой ввод можно обеспечить кликом мыши?

Ответить

Номер ответа: 14
Автор ответа:
 murrr



Вопросов: 2
Ответов: 10
 Профиль | | #14 Добавлено: 11.12.06 05:14
Уважаемый night_roll!
Согласна, первый вопрос поставлен некорректно.
С клавиатуры нужно вводить всякую цифирь, кликом мыши - адрес ячейки. Если говорить об аналоге, то это Мастер функций в Excel.

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 13.12.06 01:04
Ты сама непонимаешь что хочешь от компьютера. Это просто женская логика, не в обиду сказанно... У компа только 0 и 1, а "может быть" здесь нет.

Если тебе нужно вводить данные с клавы в текстбокс, то на форме, на который этот текстбокс должен быть фокус. Т.е. .Show 0 абсолютно ненужен.

При убивании фокуса с формы, фокус убивается и со всех контролов на этой форме. При возвращении на эту форму, фокус может запоминатся, но только при возвращении.

Если хочешь чтобы форма была не активна, соответственно текстбокс был без фокуса, но всеравно туда падало все что нажато - это уже слежение за клавой, хуками например или ещё чем-то там... хоть в цикле... но само оно небудет, и не должно...

Если форма показана .Show 0, т.е. она не модальна, перед установкой фокуса форму нужно сделать активную, т.е. показать её по нормальному, или установить фокус на контрол из этой формы, что соответственно саму её сделает активную...

Ответить

Страница: 1 | 2 |

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



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