как нажать на нужную кнопку

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

как нажать на нужную кнопку

Сообщение Sashka23th » 29.08.2005 (Пн) 13:44

я наверно надоел :oops:

есть 3 кнопки
Command1
Command2
Command3
есть переменая "Coomb" = 2
как нажать на кнопку Command2 не использывая функцию IF тоесть
Command "переменная" _click
:?:

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 29.08.2005 (Пн) 13:55

Создай массив контролов и обращайся Command(Index)
А вообще думаю неплохо бы скачать справочник по VB :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 14:03

Код: Выделить всё
Friend Sub CommandClick(ByVal Index As Integer)
Dim ctl As Control

For Each ctl In Me.Controls
    If TypeOf ctl Is CommandButton Then
    Select Case Val(0 & Right$(ctl.Name, 1))
        Case Index
            ctl.SetFocus
            SendKeys "{ENTER}"
            Exit For
    End Select
    End If
Next

End Sub

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 14:35

Создай массив контролов и обращайся Command(Index)
А вообще думаю неплохо бы скачать справочник по VB

проблема в том что не могу использывать индекс

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 14:36

Friend Sub CommandClick(ByVal Index As Integer)
Dim ctl As Control

For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
Select Case Val(0 & Right$(ctl.Name, 1))
Case Index
ctl.SetFocus
SendKeys "{ENTER}"
Exit For
End Select
End If
Next

End Sub

а вот етого я совершено не понял

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 14:40

Код: Выделить всё
'нажмет на кнопку Command1
CommandClick 1
'нажмет на кнопку Command2
CommandClick 2
'и тд и тп

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 14:50

Konst_One я очень извеняюсь но просто не могу понять вот ето
Select Case Val(0 & Right$(ctl.Name, 1))
Case Index
ctl.SetFocus
SendKeys "{ENTER}"
Exit For
End Select

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 14:51

Смотрим цифру в имени твоей кнопки и сравниваем ее с заданным Index.

Command1

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 15:15

допустим заданый индекс 2, он мне выдает ошибку на
ctl.SetFocus
что я делаю не так ?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 15:22

выкладывай-ка ты сюда свой проектик, тогда и разберемся, что к чему

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 15:44

нет проблем
переменая b1 ето правильный ответ от 1 до 5
текст который написал я в Text1 сверяется с текстом который есть в Label1 c индексом b1 и если текст сходится должна нажатся 1 из 5 кнопак (command1 или command2 ....) проблема в том что должна нажатся кнопка Command b1 тоесть если b1=3 должна нажатся кнопка Command3

temp1 = Text1.Text
If InStr(1, Form2.Label1(b1 - 1).Caption, temp1, vbTextCompare) > 0 Then



Else
MsgBox "Sorry may be you wont to try again", vbOKOnly
End If

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 15:47

у тебя две формы?
на какой форме должны кнопки нажиматься?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.08.2005 (Пн) 15:49

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

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 15:59

Konst_One прости мне бежать надо вернусь вечером

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 29.08.2005 (Пн) 18:46

Sashka23th

Else
MsgBox "Sorry may be you wont to try again", vbOKOnly
End If


I guess by "wont" you mean "wAnt" :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 29.08.2005 (Пн) 21:39

FAKK2 thanks
Konst_One дело в том что ето был проект с американскими вопросами в котором было 5 вариантов ответов и один из них правильный
я лиш добавил в него возможность ответа слажнее , тоесть вместо американских ответов надо написать ответ и чтоб не менят весь код хотел при правельном написании чтоб нажималась правильная кнопка

у тебя две формы?
на какой форме должны кнопки нажиматься?

на одной форме текст который пишиш а на второй форме кнопки

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.08.2005 (Вт) 10:47

тогда может так:

Код: Выделить всё
Friend Sub CommandClick(ByVal Index As Integer)
Dim ctl As Control

For Each ctl In Form2.Controls
    If TypeOf ctl Is CommandButton Then
    Select Case Val(0 & Right$(ctl.Name, 1))
        Case Index
            ctl.SetFocus
            SendKeys "{ENTER}"
            Exit For
    End Select
    End If
Next

End Sub

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 30.08.2005 (Вт) 11:29

Sashka23th писал(а):FAKK2 thanks
Konst_One дело в том что ето был проект с американскими вопросами в котором было 5 вариантов ответов и один из них правильный
я лиш добавил в него возможность ответа слажнее , тоесть вместо американских ответов надо написать ответ и чтоб не менят весь код хотел при правельном написании чтоб нажималась правильная кнопка

у тебя две формы?
на какой форме должны кнопки нажиматься?

на одной форме текст который пишиш а на второй форме кнопки

Эм........а зачем нажимать кнопку когда можно вызывать её процедуру( CommandX_Click) :?
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.08.2005 (Вт) 11:35

Kovu
человеку хочется кнопку :)

max-aziat
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 13.06.2005 (Пн) 13:41
Откуда: Таджикистан

Сообщение max-aziat » 30.08.2005 (Вт) 11:38

Эм........а зачем нажимать кнопку когда можно вызывать её процедуру( CommandX_Click) :?[/quote]

и в правду, зачем ?
не всё сразу дается ...

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 30.08.2005 (Вт) 12:51

Kovu дело втом что я немогу вывести процедеру CommandX_Click находясь на другой форме (или не умею)


тогда может так:

Код:
Friend Sub CommandClick(ByVal Index As Integer)
Dim ctl As Control

For Each ctl In Form2.Controls
If TypeOf ctl Is CommandButton Then
Select Case Val(0 & Right$(ctl.Name, 1))
Case Index
ctl.SetFocus
SendKeys "{ENTER}"
Exit For
End Select
End If
Next

End Sub


Konst_One мне действительно стыдно :oops: но кажется я есче не дорос до понемания этой процедуры....а что токое "Friend Sub " :?:

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 30.08.2005 (Вт) 13:03

УРааа... :lol: :idea:
и вообще, какая-то странная логика у тебя. что вообще эти кнопки делают? может проще написать функцию, которая отвечает за их действия и ее с нужным параметром вызывать

вот вот где скрывался ответ я даже не ожидал что ето будет так легко
Konst_One спасибо ты мне дал класную подсказку

единственое что досехпор немогу понять неужели нельзя вывести процедуру кнопки которая находится на форме2 если сам находешся на форме1 :?:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.08.2005 (Вт) 13:21

Sashka23th писал(а):единственое что досехпор немогу понять неужели нельзя вывести процедуру кнопки которая находится на форме2 если сам находешся на форме1 :?:

Можно, конечно.
форма2.CommandX_Click() и всё.
Только в объявлении CommandX_Click нужно поменять Private на Friend.
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.08.2005 (Вт) 14:16

Friend - видимость в пределах твоего проекта
Public - глобальная видимость (если в модуле, то для твоего проекта, если в паблик классе DLL, то и для внешних прог)
Private - локальная видимость в пределах класса/модуля

Sashka23th
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 17.08.2005 (Ср) 13:17

Сообщение Sashka23th » 30.08.2005 (Вт) 14:43

ох ты круто вот как можно было нажать на кнопки не ламая себе и другим голову :wink:
на будущие буду знать СПАСИБО :!:

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Сообщение Александр Дмитриев » 04.09.2005 (Вс) 4:26

Sashka23th писал(а):MsgBox "Sorry may be you wont to try again", vbOKOnly
Wont whom? :lol:

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 04.09.2005 (Вс) 16:25

Правильнее Who do you want... - вопрос к подлежащему. А whom - довольно редкая штука :)
Моду создают модоки, а распространяют модозвоны.


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

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

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

    TopList