![]() |
|
Модераторы: Akina |
![]()
|
|
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Всем привет!
Возникла проблема. На форму добавляю такие элементы: Label Name = lblName Caption = "" Alignment = 2 - Center CommandButton Name = cmdName Caption = "Ввод имени" Пишу для кнопки такой обработчик события Click:
Вобщем нужно проверить, что пользователь ввел хотя бы один символ в InputBox и если это так, то вывести приветствие в lblName. Если поле пустое, то вывести сообщение и вернуть пользователя к вводу имени. Все вроде нормально, но если пользователь жмёт кнопку Cancel в диалоговом окне InputBox, то нужно закрыть диалоговое окно и вернуться к форме, не производя никаких действий. Проблема в том, что когда пользователь жмёт Cancel, то InputBox возвращает 0 и я не могу его отличить от того, когда пользователь ничего не ввел и нажал кнопку "OK". Подскажите как осуществить такую проверку? Заранее спасибо, Денис Это сообщение отредактировал(а) korob2001 - 4.1.2005, 15:49 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Никак.
Или дай значение по умалчанию, например "Гость". И тогда если Len(sName) = 0, то нажали Cancel. -------------------- Никогда не говори никогда |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Но ведь кнопка Cancel сама может сказать программе,что ее нажали.Добавь через And еще одно условие.
-------------------- Возмездие настигнет |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
korob2001, boevik прав. Но только я бы немного подругому твой код написал...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Hi!
Имхо Старуха права:
|
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Сястье - это когда тебя понимают!
-------------------- Возмездие настигнет |
|||
|
||||
| bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Сорри Старуха, похоже vbOK здесь не прокатит
Надо юзать вариант cardinala |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
Я имела ввиду
Private Sub Command1_Click() Text1.Text = "Ой,меня нажали" End Sub Private Sub Command2_Click() If Text1.Text = "Ой,меня нажали" Then MsgBox "Юзер ушел" End If End Sub -------------------- Возмездие настигнет |
|||
|
||||
| bom |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Интересный вопрос однако...
Кроме как отслеживать имя кнопки под курсором в момент ее нажатия ничего умного в голову не приходит:
Недостаток - не отслеживается нажатие с клавиатуры. Есть ли другие способы?
К сожалению InputBox не возвращает ничего кроме строки, введенной юзером, узнать какая кнопка была нажата стандартными средствами никак не получается. |
||||
|
|||||
| Staruha |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
грубо говоря
надо заменить на
а Text1.Text - надо заменить переменной.Так просто наглядней -------------------- Возмездие настигнет |
||||
|
|||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Старуха, ты говориш о форме с кнопками, код которых можно намудрить глубоко по желанию. Тут вопросов нет.
Только вот korob2001 спрашивал о InputBox. Там невозможно запрограммировать кнопки. Вы говорите о разных вещах. -------------------- Я желаю всем Счастья! |
|||
|
||||
| bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
2Старуха
Способ хороший, но он тоже не подходит для определения какая кнопка была нажата (ОК или Отмена) когда Len(sName) = 0. А именно этот вопрос, как я понимаю, является основным в этом топике. |
|||
|
||||
| Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 2 Всего: 27 |
-------------------- Возмездие настигнет |
|||
|
||||
| korob2001 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: нет Всего: 61 |
Да, но ведь значение по умолчанию может быть и удалено, после чего юзер может нажать OK. Хотя, в принципе, ничего другово не остаётся.
Согласен. ;))))
Да, я имел ввиду именно InputBox.
Только без слёз. Кнопка Cancel на InputBox того не стоит. ;)))))))) To All Как я понял невозможно проконтролировать кнопки на InputBox. Мда.... Может добавить к проекту стандартную форму и самому сделать что-то типа InputBox? Наверное так и поступлю. Всем большое спасибо. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||
|
|||||||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Во нашел:
Alan Young еще в 2002 году You display an InputBox. But did the user press Cancel - or OK without entering anything? If you thought there was no way to tell the difference, you're wrong. You see, if the user presses cancel, vbNullString is returned. However if they press OK, the empty string ("") is sent back. But in Visual Basic, vbNullString equates to an empty string, so you can't compare the two - even though in reality, they're completely different. However you can use the StrPtr ('string pointer') function to determine whether the return string is indeed a vbNullString - as by definition, a vbNullString 'pointer' is zero. And this code demonstrates how to do that.
www.developer.com То есть то, что я тогда написал превращается в
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |