| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Label |
| Автор: Гость_Гость 13.5.2005, 21:59 |
| Есть форма, на ней Label1 и кнопка Command1 При запуске программы переменной <А> присваивается случайное число от 1 до 3 При нажатии на кнопку Command1 если А=1 кнопка исчезает и Label1="Выпала 1" если А=2 кнопка исчезает и Label1="Выпала 2" если А=2 кнопка исчезает и Label1="Выпала 3" Private Sub Form_Load() Randomize A = Int((3 * Rnd) + 1) End Sub Private Sub Command1_Click() Command1.Visible = False If A = 1 Then Label1 = "Выпала 1" If A = 2 Then Label1 = "Выпала 2" If A = 3 Then Label1 = "Выпала 3" End Sub Но при нажатии на Command1, Label1 остается пустой... в чем проблема? |
| Автор: Naghual 13.5.2005, 22:07 |
| А переменная А у тебя не объявленна. Объяви ее в разделе Declaration кода формы: Dim A As Integer |
| Автор: Guest 14.5.2005, 02:26 |
| Declaration Dim A As Integer Private Sub Form_Load() Randomize A = Int((3 * Rnd) + 1) End Sub Private Sub Command1_Click() Command1.Visible = False If A = 1 Then Label1 = "Выпала 1" If A = 2 Then Label1 = "Выпала 2" If A = 3 Then Label1 = "Выпала 3" End Sub НЕ РАБОТАЕТ |
| Автор: Вадян! 14.5.2005, 04:42 | ||
Попробуй так
|
| Автор: Guest 14.5.2005, 06:00 |
| Declaration Option Explicit Dim a As Integer Private Sub Form_Load() Randomize a = Int((3 * Rnd) + 1) End Sub Private Sub Command1_Click() Command1.Visible = False If a = 1 Then Label1 = "Выпала 1" If a = 2 Then Label1 = "Выпала 2" If a = 3 Then Label1 = "Выпала 3" End Sub выдает ошибку !!! Declaration |
| Автор: Вадян! 14.5.2005, 06:46 | ||||
Я тут написал пример, но тебе надо кинуть на форму ещё Техт1 и при вводе в него цифру от одного до трёх получается то что хотел а по другому я пока и сам не знаю как??? Да относительно
Тебе не надо писать это слово, тебе надо зайти в (General) (Declaration) и там прописать Option Explicit Dim A As Integer |
| Автор: Гость_Run-time Error 14.5.2005, 19:37 |
| Уважаемый Гость. Перед тем, как заниматься программированием, советую хоть чуть-чуть почитать книги! А то в последнее время столько ...тупых... вопросов от гостей стало поступать... прямо жуть |
| Автор: Гость_Legion 15.5.2005, 05:53 |
| а для чего еще форум? |
| Автор: Voldemar2004 15.5.2005, 11:35 | ||
Если тебе дали на работе задачу, ты ее решаешь и что-то не получается - тогда на форум, а вопросы, "как мне поместить Label на форму" - для этого есть учебники/справочники. |
| Автор: Вадян! 15.5.2005, 12:12 | ||||
Voldemar2004
Да ладно не злись он вроде не о том, лучше если знаеш подскажи как без Техт1 обойтись
|
| Автор: Voldemar2004 15.5.2005, 13:32 | ||||||||
Вадян!, тебе не кажется, что
будет всегда выдавать одно и тоже значение равное нулю.
Не очень понял зачем вам TextBox, вы в нем что ли хотели выводить "Выпала 3", "Выпала 2" и т.п.? |
| Автор: Gannibal 15.5.2005, 14:16 | ||||
может вот так вот уже или я чегото непонял?
а то я чегото непонял что за строчка у вас такая
чёто она помойму неработает |
| Автор: Guest 15.5.2005, 17:17 |
| Private Sub BB1_Click() BB1.Visible = False If LB1 = "B" Then Label5 = "Найден выход.": level = level + 1: GoTo XXX100: End Sub GoTo XXX100: - если поместить за пределами Private Sub BB1_Click() .... End Sub то переход туда не происходит. Почему ? |
| Автор: Guest 15.5.2005, 17:19 |
| то есть вот так Private Sub BB1_Click() BB1.Visible = False If LB1 = "B" Then Label5 = "Найден выход.": level = level + 1: GoTo XXX100: End Sub XXX100: текст программы..... |
| Автор: cardinal 15.5.2005, 17:45 | ||||
и вообще
А можешь просто сделать отдельную функцию и выполнять ее по условию... Модератор: Пожалуйста, один топик - один вопрос. |
| Автор: Voldemar2004 15.5.2005, 18:03 | ||
M.E.G.U.S, ты прав, мне тоже кажется ерунда какая-то. И смысла задачи то я не понял. Гость_Гость делает какую-то игру. |
| Автор: Gannibal 15.5.2005, 18:30 | ||||||
вот так вот должно быть
кстати Гость у тебя там ошибка в этой строчке
там в конце недложно быт ":" вот так вот Добавлено @ 18:31
полностью согласен |
| Автор: Voldemar2004 15.5.2005, 19:52 | ||
А это зачем? |
| Автор: cardinal 15.5.2005, 21:09 | ||||
Ходилку по лабиринту Добавлено @ 21:09
В смысле? |
| Автор: Gannibal 15.5.2005, 23:05 | ||||
а может стрелялку какую нибудь
он наверное пошутил как я понял |
| Автор: Guest 16.5.2005, 07:14 |
| Option Explicit Private Sub Command1_Click() Dim level Command1.Visible = False If Label1.Caption = "B" Then Label5.Caption = "Íàéäåí âûõîä.": level = level + 1: GoTo XXX100 XXX100: Print "ura" End Sub это понятно. но если есть Private Sub Command1_Click() Private Sub Command2_Click() ..... Private Sub Command100_Click() и что бы каждый раз не писать XXX100: Print "ura" его нужно вынести куда то и написать один раз. но обращаться программа будет туда из разных мест. |
| Автор: Voldemar2004 16.5.2005, 10:14 | ||
Ну зачем Goto, если есть операторы If else end if, elseif, select case end select ? Потом замучаешься крутить колесо мыши и бегать по экрану глазами в пойсках этой несчастной метки, связанной с Goto. |
| Автор: Guest 16.5.2005, 12:30 |
| XXX100: Print "ura" его нужно вынести куда то и написать один раз. но обращаться программа будет туда из разных мест. как сделать ?? |
| Автор: Voldemar2004 16.5.2005, 15:45 | ||||||||
Module:
Form1:
Form2:
Guest, что ты пишешь, если не секрет? Игру? |
| Автор: Guest 16.5.2005, 23:13 |
| а зачем загружать форму2 ? |
| Автор: cardinal 17.5.2005, 01:17 |
| Ну, Guest, это же просто пример Давай уж регистрируйся, хватит быть гостем |
| Автор: Guest 17.5.2005, 18:36 |
| Блин, вот код програмки ' Имеется форма на которой 4 label (LA1, LA2, LB1, LB2) ' На них наложены 4 кнопки (BA1, BA2, BB1, BB2) ' Выпадает случайное число для К (клад) ' Выпадает случайное число для В (выход) ' Если игрок нажал кнопку под которой ничего нет, игра продолжается. ' Если игрок попал на К - добавляется 100 очков ' Если игрок попал на В - происходит смена уровня (+1), все кнопки становятся видимыми. Option Explicit Dim klad As Integer Dim vixod As Integer Dim ochki As Integer Dim level As Integer Private Sub Form_Load() level = 1 Label505 = 1 XXX100: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX100 End Sub ' Нажата кнопка BA1. Кнопка исчезает показывая что под ней. Private Sub BA1_Click() BA1.Visible = False ' результат того что под кнопкой. Если под кнопкой К добавляем 100 очков, отображаем результат. If LA1 = "K" Then Label501 = "Найден клад. + 100": ochki = ochki + 100: Label503 = ochki If LA1 = "B" Then Label501 = "Найден выход.": level = level + 1: Label505 = level: GoTo XXX200 GoTo XXX205 XXX200: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX200 XXX205: End Sub ' Нажата кнопка BA2. Кнопка исчезает показывая что под ней. Private Sub BA2_Click() BA2.Visible = False ' результат того что под кнопкой. Если под кнопкой К добавляем 100 очков, отображаем результат. If LA2 = "K" Then Label501 = "Найден клад. + 100": ochki = ochki + 100: Label503 = ochki If LA2 = "B" Then Label501 = "Найден выход.": level = level + 1: Label505 = level: GoTo XXX200 GoTo XXX205 XXX200: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX200 XXX205: End Sub ' Нажата кнопка BB1. Кнопка исчезает показывая что под ней. Private Sub BB1_Click() BB1.Visible = False ' результат того что под кнопкой. Если под кнопкой К добавляем 100 очков, отображаем результат. If LB1 = "K" Then Label501 = "Найден клад. + 100": ochki = ochki + 100: Label503 = ochki If LB1 = "B" Then Label501 = "Найден выход.": level = level + 1: Label505 = level: GoTo XXX200 GoTo XXX205 XXX200: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX200 XXX205: End Sub ' Нажата кнопка BB2. Кнопка исчезает показывая что под ней. Private Sub BB2_Click() BB2.Visible = False ' результат того что под кнопкой. Если под кнопкой К добавляем 100 очков, отображаем результат. If LB2 = "K" Then Label501 = "Найден клад. + 100": ochki = ochki + 100: Label503 = ochki If LB2 = "B" Then Label501 = "Найден выход.": level = level + 1: Label505 = level: GoTo XXX200 GoTo XXX205 XXX200: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX200 XXX205: End Sub ------------------------------------------------------------------------------------------------------------------------------------------------------------- На форме размещено 4 кнопки, но по замыслу их должно 400 (поле 20 х 20), как видите из программы ее часть повторяется при нажатии каждой кнопки. -------------------------------------------------------------------------------------------------------------------------------------------------------------- XXX200: ' все кнопки видимые BA1.Visible = True BA2.Visible = True BB1.Visible = True BB2.Visible = True ' обнуление вида ячеек LA1 = "" LA2 = "" LB1 = "" LB2 = "" ' определяем в какой ячейке клад и присваиваем выпавшему номеру ячейки букву К Randomize klad = Int((4 * Rnd) + 1) If klad = 1 Then LA1 = "K" If klad = 2 Then LA2 = "K" If klad = 3 Then LB1 = "K" If klad = 4 Then LB2 = "K" ' определяем в какой ячейке выход и присваиваем выпавшему номеру ячейки букву В Randomize vixod = Int((4 * Rnd) + 1) If vixod = 1 Then LA1 = "B" If vixod = 2 Then LA2 = "B" If vixod = 3 Then LB1 = "B" If vixod = 4 Then LB2 = "B" ' проверяем что бы не совпали ячейки выхода и клада. Если совпали, делаем расчет заново. If klad = vixod Then GoTo XXX200 ---------------------------------------------------------------------------------------------------------------------------------------------------------- Если их 4 то это еще ладно, но когда их 400, то код увеличится до офигенных размеров. Вышеуказанная часть должна быть написана 1 раз, а не 400 раз (по 1000 строк в каждой ). Так вот как это сделать? Куда и как прописать этот кусочек кода, чтобы к нему обращаться при нажатии одной из 400 кнопок ??? |
| Автор: cardinal 17.5.2005, 20:29 | ||
Для начала сделай функцию и вставь туда повторяющийся кусок:
Как объявлять функции и т.д. найдешь тут: http://vb.hut.ru/vbnovice/les1.htm А вообще я тебе про это 15.05. говорил. Самому не хочется мозгами пораскинуть? |
| Автор: Guest 18.5.2005, 05:28 |
| Так бы сразу и сказал, что делается это так: Private Sub BA1_Click() BA1.Visible = False ... текст программы... Call XXX100 End Sub Public Function XXX100() As Long ....Часто используемый код.... End Function а то все вокруг да окола... |
| Автор: vADIKg 18.5.2005, 16:11 | ||
| Не скажу, что я спец, но это работает. http://www.alpari-idc.ru/ru/forum/images/smiles/icon_rolleyes.gifНужно только накопировать в форме нужное количество кнопок и меток. Код вообще не нужно трогать. И все. Тестил при 100 - работает
|
| Автор: cardinal 18.5.2005, 18:25 | ||
И сделать из них массив! |
| Автор: vADIKg 19.5.2005, 07:00 | ||
Да, конечно. В камментах написано, что имеем массивы Command1 и Label1. Вначале создаем массивчики объектов, а дальше copy-paste, пока не надоест. |
| Автор: Exception 20.5.2005, 11:33 | ||
[offtop]
скорее "запутывалку форумчан" |