Три вопроса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Три вопроса

Сообщение A.A.Z. » 27.08.2003 (Ср) 23:18

1. Как сделать так, чтобы при нажатии "Отмена" в InputBox не появлялось ошибок? При этом vbNullString не подходит.
2. Как пользоваться свойством Cancel в событии Unload?
3. Как сделать форму не только поверх всех остальных, но и постоянно активную, т.е. чтобы переключения на любые другие окна не работали?

Спасибо всем ответившим. :roll:
Нет меня больше

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 27.08.2003 (Ср) 23:35

вопрос #1:
Код: Выделить всё
dim strString as string
strString = InputBox("Enter string","InputBox")
if strString="" then msgbox("User clicked CANCEL")

Но следующий момент отловить невозможно: юзер ввел пустую строку ("") и нажал OK или просто нажал Cancel - разницы никакой.
вопрос #2:
Cancel = 1 блокирует Unload
вопрос #3:
вряд ли возможно, или я просто не знаю.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.08.2003 (Чт) 2:24

Насчёт №3: обсуждается регулярно. Предлагались варианты типа "ставить себе фокус по таймеру", "отлавливать событие потери фокуса и ставить оный", "запретить курсору покидать окно" и т.д., но нафига это?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хой
Не математик
Не математик
 
Сообщения: 541
Зарегистрирован: 26.08.2002 (Пн) 0:21
Откуда: Россия

Сообщение Хой » 28.08.2003 (Чт) 3:15

GSerg писал(а):"запретить курсору покидать окно"

...прошаренный перец, нажмёт Alt+Tab :-)

amda
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 134
Зарегистрирован: 11.09.2002 (Ср) 15:14
Откуда: Russia, Волгоградская обл., г. Волжский

Сообщение amda » 28.08.2003 (Чт) 8:33

да и вообще такие вещи, как отключение кнопки закрытия диалога, запрет покидать форму и прочие, ограничивающие "права" пользователя... Всё это очень грубые и нежелательные методы. Пользователь может и обидеться, плюнуть на такую вредную и упрямую программу и найти себе другую - более дружественную.

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 28.08.2003 (Чт) 11:45

#3:
Код: Выделить всё
Form.Show vbModal

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 28.08.2003 (Чт) 15:05

amda писал(а):да и вообще такие вещи, как отключение кнопки закрытия диалога, запрет покидать форму и прочие, ограничивающие "права" пользователя... Всё это очень грубые и нежелательные методы. Пользователь может и обидеться, плюнуть на такую вредную и упрямую программу и найти себе другую - более дружественную.


Не-ет, у меня в программе (БД) при нажатии "Новая запись" открывается новая форма, просто нужно сделать её поверх всех остальных, чтобы глюков не было. :!:
Нет меня больше

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 28.08.2003 (Чт) 15:10

Aleksej писал(а):#3:
Код: Выделить всё
Form.Show vbModal

Спасибо большое! :)
Нет меня больше

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 28.08.2003 (Чт) 15:15

mad_Max писал(а):вопрос #1:
Код: Выделить всё
dim strString as string
strString = InputBox("Enter string","InputBox")
if strString="" then msgbox("User clicked CANCEL")

Но следующий момент отловить невозможно: юзер ввел пустую строку ("") и нажал OK или просто нажал Cancel - разницы никакой.

Нет, насчёт ""-то я знаю, а как в CommonDialog нельзя сделать, т.е. ""+ОК не равно Cancel?
mad_Max писал(а):вопрос #2:
Cancel = 1 блокирует Unload

Значит, так:

Код: Выделить всё
Sub Form_Unload (Cancel As Integer)
msg = MsgBox("Точно?", vbQuestion+vbYesNo, "Выход")
If msg = vbYes Then End Else Cancel = 1
End Sub
Нет меня больше

amda
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 134
Зарегистрирован: 11.09.2002 (Ср) 15:14
Откуда: Russia, Волгоградская обл., г. Волжский

Сообщение amda » 28.08.2003 (Чт) 15:26

A.A.Z. писал(а):Нет, насчёт ""-то я знаю, а как в CommonDialog нельзя сделать, т.е. ""+ОК не равно Cancel?


я этот контрол никогда не юзаю. А чистый и надёжный API. Если в нём использовать такой набор флагов, то никаких проблем не бывает. Все неожиданные действия юзера учтены.

OFN_CREATEPROMPT Or OFN_EXPLORER Or OFN_FILEMUSTEXIST _
Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST

там если нажато OK при пустом имени файла - ничего не происходит. Только кнопка топчется впустую.
А Cancel закрывает диалог.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 28.08.2003 (Чт) 15:52

Не в ComDlg дело... Дело в InputBox...
Нет меня больше


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 18

    TopList