Вопрос по Inputbox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Вопрос по Inputbox

Сообщение Алексей К. » 15.09.2004 (Ср) 14:40

Запрашиваю:
имя=inputbox("Введите имя",titul$)
Так вот если пользователь ничего не ввел и нажал <OK> то я отлавливаю через if имя="" then... типа "введите имя!!!"
А как отловить если нажал <Отмена> (переменная "имя" опять пустой будет)??? Т.е. уйти на End Sub после нажатия <Отмена>

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

Сообщение alibek » 15.09.2004 (Ср) 14:57

Никак, когда функция возвращает пустую строку, это значит либо то, что пользователь ввел пустую строку, либо то, что пользователь нажал отмену.
Напиши свой InputBox, если лень, могу свою реализацию подкинуть.
Форма максимально автономна, использование:
Код: Выделить всё
If frmInputBox.InputText(ReturnText, FormCaption, InputBoxStyle, InputTitle, MaxTextLength, ListItems) Then
  ...
End If



P.S. Вспомогательные функции:
Код: Выделить всё
Declare Function SendMessage ...

Const WM_USER As Long = &H400&
Enum WindowMessageConstants
  cbFindString = &H14C&
  cbGetItemHeight = &H154&
  cbLimitText = &H141&
  emLimitText = &HC5&
  lbFindString = &H18F&
End Enum

Function FindByValue(ListControl As Control, Optional ByVal Value As String) As Long
Dim I As Long, msg As Long
If TypeOf ListControl Is ComboBox Then
  msg = WindowMessageConstants.cbFindString
  If Len(Value) = 0 Then Value = ListControl.Text
ElseIf TypeOf ListControl Is ListBox Then
  msg = WindowMessageConstants.lbFindString
Else
  Exit Function
End If
I = SendMessage(ListControl.hWnd, msg, -1&, ByVal Value)
FindByValue = I + 1
End Function
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение GSerg » 15.09.2004 (Ср) 17:22

А как же бубен? :)

Код: Выделить всё
if strptr(inputbox("enter something...")) then
  'нажали OK
else
  'нажали отмену
end if
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 15.09.2004 (Ср) 17:38

Вот блин! А для кого же я старался? :)
Lasciate ogni speranza, voi ch'entrate.

kazah_
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 13.01.2003 (Пн) 18:37
Откуда: Russia

Сообщение kazah_ » 15.09.2004 (Ср) 19:03

alibek писал(а):Вот блин! А для кого же я старался? :)
ну не знаю.. по моемуц слишко заумно...
Mr DEN - THE WAY YOU KNOW / Мр. ДЕН - Ваш Путь к Познанию!

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

Сообщение A.A.Z. » 15.09.2004 (Ср) 22:26

GSerg писал(а):А как же бубен? :)

Код: Выделить всё
if strptr(inputbox("enter something...")) then
  'нажали OK
else
  'нажали отмену
end if
Тьфу, блин, я столько времени му**лся над этим, а решение оказалось как в подписи Шамана... :)

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

Сообщение GSerg » 15.09.2004 (Ср) 22:30

Ты не поверишь, но эта идея пришла мне сразу после того, как я собрался громко удивиться в том смысле, что, дескать, alibek прошляпил возвращаемое значение inputbox (почему-то мне показалось, что оно на манер такового у msgbox, то есть имеется vbCancel :)), но вместо этого обнаружил стринг и страшно удивился :D
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 16.09.2004 (Чт) 6:38

Всем спасибо!


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

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

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

    TopList