Select Case

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

Select Case

Сообщение kminas » 23.02.2006 (Чт) 12:42

Немного разобрался с Select Case, но сиспользованием переменных в нем ничего не понимаю. Что делают переменные и что надо делать в моем случае?
Вот пример процедуры, в которой при выборе любого из двух значений марок вентиляторов в Combo2, в Combo3 должен появиться список их мощности, далее аналогично с другими марками. У меня процедура не работает.
Код: Выделить всё
Private Sub Combo2_Click()
Dim fan As String
Select Case fan
Case "ВР100-45-5-02", "ВР100-45-5К"
Combo3.Clear
Combo3.AddItem "5,5"
Combo3.AddItem "7,5"
Combo3.AddItem "11"
Combo3.AddItem "15"
Combo3.ListIndex = 0
End Select
End Sub
Константин

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

Сообщение GSerg » 23.02.2006 (Чт) 12:50

Наверное, следующий шаг - вопрос о назначении и синтаксисе конструкции IF...THEN :roll:
Может стоит всё-таки почитать книжку какую-то? Потому что это даже неприлично, имхо :roll:
Ну Select Case Combo2.text.
Кошмар :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.02.2006 (Чт) 12:59

Код: Выделить всё
Select Case Variable
    Case 1
        1
    Case 2
        2
End Select


Действительно, неприличный вопрос. Конструкция простейшая. Select Case Variable - значит, что будет производиться выбор действий при различных значениях переменной Variable.
Если variable=1, то происходят действия 1...
Если variable=2, то происходят действия 2...

Руки в ноги, и в магазин за книгой для начинающих. В первой же попавшейся все объяснят как следует.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 23.02.2006 (Чт) 13:08

А почему у меня не идет процедура?
З.ы. И учтите, что я НОВИЧЕК. Я меньше месяца как начал использовать форму в первой своей программе на Басике, а первый макрос на VBA написал 26 октября.
Константин

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

Сообщение GSerg » 23.02.2006 (Чт) 13:14

kminas писал(а):А почему у меня не идет процедура?

Потому что ты проигнорировал два ответа выше.

kminas писал(а):З.ы. И учтите, что я НОВИЧЕК.

Отдаёт позой.
Не только не полезно, но и очень вредно. Будь ты хоть трижды новичок.

kminas писал(а):Я меньше месяца как начал использовать форму в первой своей программе на Басике, а первый макрос на VBA написал 26 октября.

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

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 23.02.2006 (Чт) 14:33

Я не проигнорировал, а не проверял, теперь проверил, прошло, спасибо, но только про переменные мне до конца не понятно. ЗдесьGSergсоветует конкретный
Код: Выделить всё
Combo2.text
а в упомянутых книгах, например, непонятная буква
Код: Выделить всё
х
почему?
Код: Выделить всё
Select Case x
CASE 1 То 9
Labell.Caption = "Значение больше 0"
CASE 0
Labell.Caption = "Значение равно 0"
CASE -9 То -1
Label1.Caption = "Значение меньше 0"
End Select
Константин

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 23.02.2006 (Чт) 14:50

Иногда полезно читать книгу сначала. Combo2.text это не волшебное слово решающее все проблемы :wink:. x - скорее всего это некоторая переменная.
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.02.2006 (Чт) 14:51

Вы забыли ешё обратную сторону
Код: Выделить всё

Select Case 0
    Case Var1

    Case Var2

    Case Var3
End Select


Определяем, у какой переменной значение - 0.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Kovu » 23.02.2006 (Чт) 14:51

kminas
А ты понимаешь вообще что значит конструкция
Select Case x
...
End Select ?
Так вот это выбор значение переменной, в данном случае х.
В твоем же случае требуется выбирать из значений Combo2.text
Если всё делать своими ручками, они скоро отвалятся !

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.02.2006 (Чт) 14:56

Непонял (1)
Последний раз редактировалось administrator, всего редактировалось 999 раз(а)

Непонял (2)
Select Case X

Код: Выделить всё

Select Case X
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.02.2006 (Чт) 14:58

kminas, будут работать такие коды:

Код: Выделить всё
Private Sub Combo2_Click()
Select Case combo2.text
Case "ВР100-45-5-02", "ВР100-45-5К"
Combo3.Clear
Combo3.AddItem "5,5"
Combo3.AddItem "7,5"
Combo3.AddItem "11"
Combo3.AddItem "15"
Combo3.ListIndex = 0
End Select
End Sub

Код: Выделить всё
Private Sub Combo2_Click()
Dim fan As String
fan=Combo2.text
Select Case fan
Case "ВР100-45-5-02", "ВР100-45-5К"
Combo3.Clear
Combo3.AddItem "5,5"
Combo3.AddItem "7,5"
Combo3.AddItem "11"
Combo3.AddItem "15"
Combo3.ListIndex = 0
End Select
End Sub


Сравни оба со своим и сделай вывод :)

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 23.02.2006 (Чт) 15:49

Все правильно. У меня получилось:
Код: Выделить всё
Select Case Combo2.Text
Case "ВР100-45-5-02", "ВР100-45-5К"
Combo3.Clear
Combo3.AddItem "5,5"
Combo3.AddItem "7,5"
Combo3.AddItem "11"
Combo3.AddItem "15"
Combo3.ListIndex = 0
End Select


В книге написано так
Синтаксис конструкции Select Case следующий:
Код: Выделить всё
Select Case сравниваемоеЗначение
CASE значение1
конструкция1
CASE значение2
конструкция2
. . .
End Select

В начале конструкции расположены ключевые слова select case, указывающие, что расположенный рядом с ними параметр сравниваемоеЗначение будет проверяться на несколько значений. Далее следуют группы команд. начинающиеся с ключевого слова Case. Если параметр сравниваемоеЗначение равен значению, указанному в текущем операторе case, то будут выполняться команды, расположенные между этим и следующим ключевым словом case.
В качестве примера воспользуемся конструкцией Select Case для решения предыдущей задачи:
Код: Выделить всё
Select Case x
CASE 1 То 9
Labell.Caption = "Значение больше 0"
CASE 0
Labell.Caption = "Значение равно 0"
CASE -9 То -1
Label1.Caption = "Значение меньше 0"
End Select

Мне до сих пор непонятно что это за мифическое "х" и почему его надо писать, если он нигде больше не фигурирует? Это и в других книгах, если, например, как пишет Amed
fan=Combo2.text
или, например, х = Inputbox, то все ясно, а, если просто "х" или другое слово, как приводят в книгах, которые советовать мне читать начитанный Amed. У меня бумажных и электронных, для начинающих и для продолжающих штук 15(!). Если бы хорошо было написано форумы бы пустовали!
Константин

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.02.2006 (Чт) 16:04

Еще раз прочитай свою вторую цитату в последнем посте. x - не мифическая буква, взятая с потолка, а сравниваемоеЗначение. Почему это непонятно с самого начала?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.02.2006 (Чт) 16:06

Select Case <Что-то 1>
Case <Что-то 2>
<Какое то действие 1>
Case <Что-то 3>
<Какое то действие 2>
Case <Что-то 4>
<Какое то действие 3>
Case <Что-то 5>
<Какое то действие 4>
Case <Что-то 6>
<Какое то действие 5>
End Select

Эквивалентно

If <Что-то 1> = <Что-то 2> Then <Какое-то действие 1>: GoTo 10
If <Что-то 1> = <Что-то 3> Then <Какое-то действие 2>: GoTo 10
If <Что-то 1> = <Что-то 4> Then <Какое-то действие 3>: GoTo 10
If <Что-то 1> = <Что-то 5> Then <Какое-то действие 4>: GoTo 10
If <Что-то 1> = <Что-то 6> Then <Какое-то действие 5>: GoTo 10
10

Ещё это лучше записать так
If <Что-то 1> = <Что-то 2> Then
<Какое-то действие 1>
ElseIf <Что-то 1> = <Что-то 3> Then
<Какое-то действие 2>
ElseIf <Что-то 1> = <Что-то 4> Then
<Какое-то действие 3>
ElseIf <Что-то 1> = <Что-то 5> Then
<Какое-то действие 4>
ElseIf <Что-то 1> = <Что-то 6> Then
<Какое-то действие 5>
Else
А тут то, что написано после Case Else
End If

Я думаю теперь вопросов быть уже не может :lol:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 23.02.2006 (Чт) 16:07

Вот я, как новичок, и не понимаю с чем оно сравниваемое.
Константин

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.02.2006 (Чт) 16:09

Сравнивается с каждым из указанных в списке Case.

Если сравниваемоеЗначение = значение1, то выполняем конструкцию1
Если сравниваемоеЗначение = значение2, то выполняем конструкцию2

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 23.02.2006 (Чт) 16:11

Спасибо, наконец въехал!
Еще вопрос, можно ли сделать так?
В Сombo3 и Сombo4 у меня по 2 значения, если в Сombo3 я выбираю "1", то в Combo4 появляется "5-9", а, если "2", то "5-17,5",
а можно ли сделать, чтобы было и наоборот, чтобы по выбору значения Combo4 появлялось значение Сombo3?
Константин

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 23.02.2006 (Чт) 17:37

Если твой Combo позволяет вводить текст, то так и пишешь
Код: Выделить всё
Como1.Text="Some text"
, а если позволяет лишь выбирать из списка, тогда
Код: Выделить всё
Combo1.ListIndex=Some_number
, где Some_number индекс нужного тебе элемента.
А я все практикую лечение травами...

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 24.02.2006 (Пт) 2:42

Кто бы мне так разжевал :о))

НовичЁк, ты владеешь тайными приемами опроса всевышних данного форума?

Единственный правильный совет, который здесь дали - СНАЧАЛА прочти купленную книгу С НАЧАЛА, а то в следующий раз рискуешь не понять, как "мифическая" х попала, например, в цикл for.
Пора уже всем хорошим людям собраться и убить всех плохих людей.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.02.2006 (Пт) 4:02

Да, здесь новичок явно показал себя: http://forum.sources.ru/index.php?showtopic=133827
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 9:12

2 BV
Не стоит там его банить... Так или иначе, но kminas-у придется прикупить книженцию.
А я все практикую лечение травами...

Гость
 

Сообщение Гость » 24.02.2006 (Пт) 11:51

По-моему топик пора закрыть. Разговор вышел за пределы объявленной темы!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 12:18

По-моему топик пора закрыть. Разговор вышел за пределы объявленной темы!
Гм... интересный ник. ИМХО, с ним ты долго тут не проживешь...
А я все практикую лечение травами...

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 24.02.2006 (Пт) 12:22

;) Забанить за нецензурный ник

Гость
 

Сообщение Гость » 24.02.2006 (Пт) 12:26

minotawr
А ты "Куклы" по НТВ смотрел? Там было можно?!

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 24.02.2006 (Пт) 12:30

Знаешь, мне все равно, но многим не понравится, особенно админам, и в правилах форума кажись про такие ники было что-то, правда не берусь утверждать, но мне кажется тебе самому проще перерегестрироватся, не дожидаясь пока забанят :)

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 12:38

и в правилах форума кажись про такие ники было что-то
Как это кажись? :evil:
но мне кажется тебе самому проще перерегестрироватся
Ник самому сменить не возможно, это может лишь админ.
не дожидаясь пока забанят
Сомневаюсь что этот человек волнуется по этому поводу. Его цель - показать свое "остроумие". Только интересно ли это кому нибудь? Сомневаюсь. Лично меня это сильно раздражает. Убедительно прошу тебя, Хрен Моржовый, не писать больше под этим ником...
А я все практикую лечение травами...

minotawr
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 195
Зарегистрирован: 08.01.2006 (Вс) 12:38
Откуда: Курск

Сообщение minotawr » 24.02.2006 (Пт) 12:43

Twister писал(а):Как это кажись? :evil:

Я не могу привести по памяти точную цитату, поэтому и пишу: "кажись"

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 02.03.2006 (Чт) 0:23

Twister писал(а):2 BV
Не стоит там его банить... Так или иначе, но kminas-у придется прикупить книженцию.

А у меня с самого начала было 2 бумажные и штук 5 электронных книг, а сейчас раза в 2 больше. Да только вам умным, все понятно с одного взгляда, а мне неучу, ну непонятно написано и все. Прикажите изгнать меня из вашего элитного общества.
GB826 писал(а):Единственный правильный совет, который здесь дали - СНАЧАЛА прочти купленную книгу С НАЧАЛА, а то в следующий раз рискуешь не понять, как "мифическая" х попала, например, в цикл for.

А , С НАЧАЛА написано как вставлять форму, как в нее вставлять элементы, как задавать их размеры, цвет и другие ОКОЛОпрограммные бирюльки. А потом сразу высокие материи и даже не поясняют значение употребляющихся терминов. Еслибы сам методом тыка, да еще 3-4 человека без "комплексов" не подсказали ничего не дали бы те книги. Многие небось тоже не с книг начинали. Видно запамятовали.
На этом все, Тему начинал, теперь она закрыта.
Константин

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.03.2006 (Чт) 0:38

kminas, тут дело в практике, мне с этим повезло - я когда начал писать первые программы инета не было, приходилось самому думать. Ты, главное, не отчаивайся, со всеменем все придет =)
ХЎ

След.

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

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

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

    TopList