Мне нужно менять цвет формы нажатием на одну кнопку. Как это

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

Мне нужно менять цвет формы нажатием на одну кнопку. Как это

Сообщение SCREEN » 09.02.2006 (Чт) 19:21

Мне надо создать одну кнопку, нажать в первый раз - форма стала красной, второй - желтой и т.д. Как это сделать? Помогите плиз!!!!!

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

Сообщение GSerg » 09.02.2006 (Чт) 19:26

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

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

Сообщение Kovu » 09.02.2006 (Чт) 19:26

Здесь был модератор...
Ну вот зачем он тут был? :)))

А может это модер злой?
А может и не злой
:)
Если всё делать своими ручками, они скоро отвалятся !

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 19:42

З.Ы. Первый мой ответ на этом форуме. И звёдочка ещё одна :)

Второй модератор тоже был здесь

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 19:45

Эээ... Не понял, куда код делся.

Туда же, куда код Kovu. Ждём ответа на пост № 1.

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

Сообщение Twister » 09.02.2006 (Чт) 20:08

Шлите код в личку - модеры решили заставить чела думать... :lol:
Хотя...
[цитата]
Можно подвести лошадь к водопою, но нельзя заставить ее пить...
[/цитата]
А я все практикую лечение травами...

SCREEN
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 09.02.2006 (Чт) 11:00

Помогите плиз!!!

Сообщение SCREEN » 09.02.2006 (Чт) 20:10

Я только начинаю изучать ВБ, я не знаю как спомощью одной кнопки менять фон в различные цвета (нажатием многократно все на ту единственную кнопочку)

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 20:17

Какие усилия были предприняты на данный момент?

Я только начинаю изучать ВБ, я не знаю как спомощью одной кнопки менять фон в различные цвета (нажатием многократно все на ту единственную кнопочку)

:)

Введи переменную. В начале она должна быть равной 0. Затем с каждым нажатием увеличивай её значение на единицу. Как только переменная станет больше 1, приравнивай её к 0. Таким образом, твоя переменная будет равна либо 0, либо 1. Каждое нажатие кнопки проверяй, чему он равна. Если она равна, например, 0 то делай жёлтый цвет, если 1 - то красный. Цвет формы задаётся так: Form1.BackColor=vbRed или vbYellow.

Надеюсь, что это поможет и заставит задуматься :) Ещё надею, что здесь не побывает модератор. :lol:

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

Сообщение Twister » 09.02.2006 (Чт) 20:21

Есть много способов...
(есть ли смысл давать код, если модеры его прикроют?)
Можно по нажатию на кнопку генерировать 3 случайных переменных (функция Rnd) и с помощью функции RGB преобразовывать их в цвет (тип Long). А потом присваивать цвет форме...
Повторяю, вариантов миллион, ты покажи, что ты уже сделал и помощь придет!
А я все практикую лечение травами...

SCREEN
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 09.02.2006 (Чт) 11:00

Спасибо всем!

Сообщение SCREEN » 09.02.2006 (Чт) 20:24

Подскажите, какая комманда используется для повторного нажатия на кнопку? "Затем с каждым нажатием увеличивай её значение на единицу" что-то типа click1, click2 или как?

SCREEN
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 09.02.2006 (Чт) 11:00

Спасибо всем!

Сообщение SCREEN » 09.02.2006 (Чт) 20:24

Подскажите, какая комманда используется для повторного нажатия на кнопку? "Затем с каждым нажатием увеличивай её значение на единицу" что-то типа click1, click2 или как?

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 20:24

нажать в первый раз - форма стала красной, второй - желтой

Можно по нажатию на кнопку генерировать 3 случайных переменных (функция Rnd) и с помощью функции RGB преобразовывать их в цвет (тип Long). А потом присваивать цвет форме...

Twister, думаю, что SCREEN имел в виду другое. :roll:

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 20:26

Нет.... У тебя есть переменная. В событии click напиши переменная = переменная + 1. И она каждый раз будет увеличиваться.

SCREEN
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 09.02.2006 (Чт) 11:00

Сообщение SCREEN » 09.02.2006 (Чт) 20:33

xqz_me Я тебе в личные написал!

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.02.2006 (Чт) 20:52

Что ж, видимо администрации сайта не удалось осуществить задуманное и секретный код всё-таки попал к SCREEN :lol:

SCREEN, ты только попробуй во всё разобраться и поменьше пытайся добывать готовый коды. Надо самому въехать.

SCREEN
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 09.02.2006 (Чт) 11:00

xqz_me

Сообщение SCREEN » 10.02.2006 (Пт) 20:47

xqz_me Так точно!!! Отныне Буду пытаться сам 8)

Vitalikbox
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 18.02.2006 (Сб) 16:01

Сообщение Vitalikbox » 25.02.2006 (Сб) 20:23

Form1.BackColor = vbRed
Имя Формы.BackColor = цвет
Есть константы цвета vbRed, vbGreen, vbBlue, vbMagenta, vbBlack, vbWhite, vbYellow.
Можно и свой:
Form1.BackColor = RGB(0,0,0)
Имя Формы.BackColor = RGB(красний от 0..255, зелений от 0..255, синий от 0..255)


А тепер ответ на вопрос

Dim colour As Integer
Private Sub cmdClick_Click()

If colour = 1 Then
frmMain.BackColor = vbRed
End If

If colour = 2 Then
frmMain.BackColor = vbGreen
End If

If colour = 3 Then
frmMain.BackColor = vbBlue
End If

If colour = 4 Then
frmMain.BackColor = vbMagenta
End If

If colour = 5 Then
frmMain.BackColor = vbBlack
End If

If colour = 6 Then
frmMain.BackColor = vbWhite
End If

If colour = 7 Then
frmMain.BackColor = vbYellow
End If

If colour = 7 Then
colour = 0
End If

colour = colour + 1

End Sub

Private Sub Form_Load()
coloyr = 1
End Sub

Удачи!

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

Сообщение Kovu » 25.02.2006 (Сб) 20:40

Vitalikbox писал(а):...

Заменяется конструкцией выбора (Select Case), и перестает выглядеть так громоздко =)
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение Хакер » 25.02.2006 (Сб) 23:12

Какой ещё Select Case

Народ, вы чего???

Код: Выделить всё
Me.BackColor = Choose(colour, vbRed, vbGreen, vbBlue, vbMagenta) 'и т д.
—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 » 25.02.2006 (Сб) 23:19

Пришел хакер и дал самый оптимизированный вариант =)
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение tyomitch » 25.02.2006 (Сб) 23:42

Ещё один вариант, кстати:
Код: Выделить всё
BackColor = QBColor(colour)


Используется стандартная EGA-шная последовательность из 16 цветов.
Изображение

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

Сообщение Хакер » 26.02.2006 (Вс) 0:21

xqz_me писал(а):SCREEN, ты только попробуй во всё разобраться и поменьше пытайся добывать готовый коды. Надо самому въехать.


А ещё выброси все книжки Visual Basic для начинающих, продолжающих и кончающих и изучай VB методом тыка. :D

А если серьёзно такой способ обучения, как показывает практика, даёт наилучший результат, чем вталкивание в голову уже "переваренных" данных. Когда сам до всего доходишь лучше вникаешь в суть.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение BV » 26.02.2006 (Вс) 1:20

Ну вот... тема вдохновила на это :)

Код: Выделить всё
Option Explicit
Option Base 1

Private Declare Function GetTickCount Lib "kernel32.dll" () As Long

Private Sub cmdFlash_Click()
    Dim lRGB(1 To 3) As Long
    Dim i As Long
   
    For i = 1 To 3
        lRGB(i) = CLng((192 * Rnd) + 64)
    Next i
    frmMain.BackColor = RGB(lRGB(1), lRGB(2), lRGB(3))
   
    Do Until lRGB(1) = 255 Or lRGB(2) = 255 Or lRGB(3) = 255
        DoEvents
        For i = 1 To 3
            lRGB(i) = lRGB(i) + 5
            If lRGB(i) > 255 Then lRGB(i) = 255
        Next i
        frmMain.BackColor = RGB(lRGB(1), lRGB(2), lRGB(3))
        Call Pause(5)
    Loop
   
    Do Until lRGB(1) = 0 And lRGB(2) = 0 And lRGB(3) = 0
        DoEvents
        For i = 1 To 3
            lRGB(i) = lRGB(i) - 5
            If lRGB(i) < 0 Then lRGB(i) = 0
        Next i
        frmMain.BackColor = RGB(lRGB(1), lRGB(2), lRGB(3))
        Call Pause(5)
    Loop
End Sub

Private Sub Form_Load()
    With frmMain
        .BackColor = RGB(0, 0, 0)
        .Caption = "Flash"
    End With
End Sub

Private Sub Pause(ByVal lPause As Long)
    Dim lTime As Long
    lTime = GetTickCount
    Do Until GetTickCount > lTime + lPause: DoEvents: Loop
End Sub
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;

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 26.02.2006 (Вс) 1:51

Прикольно 8)
Только где это может пригодиться :roll:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

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

Сообщение GB826 » 26.02.2006 (Вс) 10:05

Админы правильно делали, только народ у нас как всегда.

Такие "Я впервый раз в ВБ, как мне написать Виндовс?" будут пока им будут давать готовые ответы. Если у кого ассоциированное мышление - сравните с попрашайками в метро, которых добрые бабушки "подкармливают", так вот все кто дал код - бабушки, гыгыгы...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

ВуД
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 59
Зарегистрирован: 23.02.2006 (Чт) 17:40
Откуда: Иркутск (Сибирь)

Сообщение ВуД » 26.02.2006 (Вс) 17:55

Скачай это :?:
Вложения
4.rar
(732 байт) Скачиваний: 89

Vitalikbox
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 18.02.2006 (Сб) 16:01

Сообщение Vitalikbox » 26.02.2006 (Вс) 20:40

Радуйся (GB826) что продвинутий, но другие начинающие и им надо помагать.

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

Сообщение GB826 » 27.02.2006 (Пн) 1:47

Vitalikbox
Тебе помОгу, как не помОчь, хорошему человеку :о)
Кто-то давал ссылку [url]gramota.ru[/url]

Я не продвинутый, просто все написано в книгах, и когда человек просит
создать одну кнопку, нажать
, вспоминается мультик, где были Двое из ларца:
- а вы что еще и есть за меня будете?
- Ага! :о) :о)
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 27.02.2006 (Пн) 2:51

Private Sub Command1_Click()
Randomize
r = Rnd * 255
g = Rnd * 255
b = Rnd * 255
BackColor = RGB(r, g, b)
End Sub

Smith68
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 92
Зарегистрирован: 02.09.2005 (Пт) 19:08
Откуда: Тамбов, Моршанск

Сообщение Smith68 » 27.02.2006 (Пн) 9:21

Вот еще
Код: Выделить всё
Private Sub ав_Click()
Static A As Long
A = A + 1
If A = "1" Then Form1.BackColor = "&H00C0C0C0"
If A = "2" Then Form1.BackColor = "&H000000FF"
If A = "3" Then Form1.BackColor = "&H000080FF"
If A = "4" Then Form1.BackColor = "&H0000FFFF"
If A = "5" Then Form1.BackColor = "&H0000FF00"
If A = "6" Then Form1.BackColor = "&H00FFFF00"
If A = "7" Then Form1.BackColor = "&H00FF0000"
If A = "8" Then Form1.BackColor = "&H00FF00FF"

End Sub
Вчера на работе получил производственную травму: ударил палец о палец.

След.

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

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

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

    TopList  
cron