Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29

На форме расположены 5 Label-ов и кнопка. Создать массив, содержащий 8 различных цветов

29.04.2011, 20:33. Показов 1641. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на форме расположены 5 меток(label) и кнопка.Создать массив,содержащий 8 различный цветов.Цветовой фон в метках меняется с различной скоростью (как вращается барабан). При нажатии на кнопку ,изменение цветов прекращается,а на экране появляется надпись"В N ячейках совпал цвет"(N-максимальное количество ячеек с совпадающим цветом).

не пойму как сделать!! ХЕЛП!
пробовал с случайными числами возится появился warning типа преобразование int to TColor или char to TColor и незапускалась вообще....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2011, 20:33
Ответы с готовыми решениями:

Создать массив, содержащий 7 различных целых чисел
Кто разбирается в паскале, помогите пожалуйста решить задачу: Создайте массив, содержащий 7 различных целых чисел. Получите новый...

На форме располагаются компоненты: редакторы Edit и Memo, Label, ListBox, кнопка "Да" и кнопка Close
На форме располагаются компоненты: редакторы Edit и Memo, Label, ListBox, кнопка "Да" и кнопка Close. При запуске программы курсор...

Создайте новое приложение, в котором на форме расположены Поле ввода, Метка и Кнопка
Создайте новое приложение, в котором на форме расположены Поле ввода, Метка и Кнопка. Пользователь вводит в Поле ввода целое число N. После...

6
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
29.04.2011, 20:59
Уже радует хотя бы то, что не тупо задачу задал, а хоть сам попробовал решить,
но всё равно, пока сам алгоритм не построишь, никто задачу за тебя не решит.
А вот, если при построении алгоритма возникнут вопросы, тогда с радостью.

Я не знаю, где у тебя там барабаны :-)
Набросал тебе пример, где при каждом нажатии на кнопку в случайном порядке
меняется цвет метки, дальше пробуй сам.
C++
1
2
3
4
5
6
7
8
9
10
// ---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Label1->Transparent = false;
    const int iMaxColorArray = 8;
    int iColorArray[] = {
        clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
    };
    Label1->Color = TColor(iColorArray[Random(iMaxColorArray)]);
}
// ---------------------------------------------------------------------------
0
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
29.04.2011, 21:47  [ТС]
Цитата Сообщение от Maluda Посмотреть сообщение
Уже радует хотя бы то, что не тупо задачу задал, а хоть сам попробовал решить,
но всё равно, пока сам алгоритм не построишь, никто задачу за тебя не решит.
А вот, если при построении алгоритма возникнут вопросы, тогда с радостью.

Я не знаю, где у тебя там барабаны :-)
Набросал тебе пример, где при каждом нажатии на кнопку в случайном порядке
меняется цвет метки, дальше пробуй сам.
C++
1
2
3
4
5
6
7
8
9
10
// ---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Label1->Transparent = false;
    const int iMaxColorArray = 8;
    int iColorArray[] = {
        clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
    };
    Label1->Color = TColor(iColorArray[Random(iMaxColorArray)]);
}
// ---------------------------------------------------------------------------
спасибо, но при обработке вылезла проблема, сделал что бы при запуске формы цвета менялись пока не нажмешь на кнопку и программа при запуске не отображается....((((
вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//..................
int k;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
k=10;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(; ; )//бесконечный цикл
{
Label1->Transparent = false;
Label2->Transparent = false;
Label3->Transparent = false;
Label4->Transparent = false;
Label5->Transparent = false;
const int iMaxColorArray = 8;
int iColorArray[] = {
clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
};
Label1->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label2->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label3->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label4->Color = TColor(iColorArray[random(iMaxColorArray)]);
Label5->Color = TColor(iColorArray[random(iMaxColorArray)]);
if(k==10) break;
}
}
//................................
Добавлено через 14 минут
а если убрать цикл то запускается, но цвета все время одни и те же на тех же лейблах(((

Добавлено через 7 минут
Все Я понял в чем проблема, создание формы не произойдет пока цикл не закончится, а он бесконечный....
А когда пробовал через кнопку, то оно в тупую залагивает и приходится закрывать...
Можно ли задать скорость замены цветов, тоесть каждые N секунд меняется цвет, где N случайное число от 0 до 3 сек???
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
29.04.2011, 23:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <vector>
typedef std::vector<TLabel*>TLabelVec;
 
#define EACH_LABEL_RANDOM true
 
class TLabelArray {
private:
    TLabelVec FLabelVec;
 
    const TColor CreateRandomColor() {
        const int iColorArray[] = {
            clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed,
            15793151};
        return TColor(iColorArray[random(ARRAYSIZE(iColorArray))]);
    }
 
public:
 
    TLabelArray() {
    }
 
    TLabelArray(const TLabelVec &ValLabelVec) {
        FLabelVec = ValLabelVec;
    }
 
    void AddLabel(TLabel *ValLabel) {
        FLabelVec.push_back(ValLabel);
    }
 
    void RemoveLabel(TLabel *ValLabel) {
        for (TLabelVec::iterator it = FLabelVec.begin();
        it != FLabelVec.end(); ++it) {
            if ((*it) == ValLabel) {
                FLabelVec.erase(it);
                break;
            }
        }
    }
 
    void SetTransparent(const bool &bTransp) {
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Transparent = bTransp;
        }
    }
 
    void SetColor(const TColor &ValColor) {
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = ValColor;
        }
    }
 
    void SetRandomColor(const bool &bRandomInEachLabel) {
        const TColor ColorPrev = this->CreateRandomColor();
        for (int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = bRandomInEachLabel ?
                this->CreateRandomColor() : ColorPrev;
        }
    }
 
};
 
TLabelArray *LabelArrayPtr;
 
// ---------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {
    Randomize();
 
    LabelArrayPtr = new TLabelArray();
    LabelArrayPtr->AddLabel(Label1);
    LabelArrayPtr->AddLabel(Label2);
    LabelArrayPtr->AddLabel(Label3);
    LabelArrayPtr->AddLabel(Label4);
    LabelArrayPtr->AddLabel(Label5);
 
    LabelArrayPtr->SetTransparent(false);
 
    LabelArrayPtr->RemoveLabel(Label2);
 
    Timer1->Enabled = true;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) {
    if (LabelArrayPtr) {
        // можно, чтобы в каждой метке цвет менялся или синхронно
        LabelArrayPtr->SetRandomColor(EACH_LABEL_RANDOM);
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Timer1->Enabled = false;
    LabelArrayPtr->SetTransparent(true);
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) {
    if (LabelArrayPtr) {
        delete LabelArrayPtr;
    }
}
// ---------------------------------------------------------------------------
Добавлено через 1 минуту
Здесь при загрузке приложения, пока не нажмёшь на кнопку будет меняться цвет в метках
1
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
30.04.2011, 13:46  [ТС]
Цитата Сообщение от Maluda Посмотреть сообщение
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (LabelArrayPtr) { // можно, чтобы в каждой метке цвет менялся или синхронно LabelArrayPtr->SetRandomColor(EACH_LABEL_RANDOM); }
Можешь написать что бы менялись по часовой стрелке?

Добавлено через 37 минут
И можно ли задать время таймера?

Добавлено через 7 минут
Все Я уже сделал таймер сам)
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
30.04.2011, 15:34
Я так понял, что у тебя метки расположены по часовой стрелке,
нумерация в их названии идёт в порядке возрастания?
То есть, "Label1", "Label2" и т.д.?

Потом мне не совсем понятно, что ты хочешь?
Каждый тик таймера новый цвет должен пройти по всем меткам?
Или каждый тик случайный цвет в одной метке, следующий проход
по часовой стрелке новый случайный цвет в другой?

Добавлено через 1 час 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <vector>
typedef std::vector<TLabel*>TLabelVec;
 
#define EACH_LABEL_RANDOM true
 
class TLabelArray {
private:
    TLabelVec FLabelVec;
 
public:
 
    TLabelArray() {
    }
 
    TLabelArray(const TLabelVec &ValLabelVec) {
        FLabelVec = ValLabelVec;
    }
 
    void AddLabel(TLabel *ValLabel) {
        FLabelVec.push_back(ValLabel);
    }
 
    void RemoveLabel(TLabel *ValLabel) {
        for (TLabelVec::iterator it = FLabelVec.begin(); it != FLabelVec.end();
            ++it) {
            if ((*it) == ValLabel) {
                FLabelVec.erase(it);
                break;
            }
        }
    }
 
    void SetTransparent(const bool &bTransp) {
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Transparent = bTransp;
        }
    }
 
    void SetColor(const TColor &ValColor) {
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = ValColor;
        }
    }
 
    void SetRandomColor(const bool &bRandomInEachLabel) {
        const TColor ColorPrev = this->CreateRandomColor();
        for (unsigned int i = 0; i < FLabelVec.size(); i++) {
            FLabelVec[i]->Color = bRandomInEachLabel ? this->CreateRandomColor()
                : ColorPrev;
        }
    }
 
    TLabel *GetLabel(const unsigned int&iLabelIndex) {
        if (iLabelIndex < FLabelVec.size()) {
            return FLabelVec[iLabelIndex];
        }
        else
            throw Exception("<" + AnsiString(iLabelIndex)
            + "> is out of range <" + AnsiString(FLabelVec.size()) + ">!!!");
    }
 
    const unsigned int GetLabelArraySize() {
        return FLabelVec.size();
    }
 
    static const TColor CreateRandomColor() {
        const int iColorArray[] = {
            clBlack, clMaroon, clBlue, clPurple, clFuchsia, clWhite, clRed, 15793151
        };
        return TColor(iColorArray[random(ARRAYSIZE(iColorArray))]);
    }
 
};
 
TLabelArray *LabelArrayPtr;
 
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    Timer1->Enabled = false;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender) {
    if (LabelArrayPtr) {
        static unsigned int iLabelIndex = 0;
        LabelArrayPtr->SetColor(this->Color);
        LabelArrayPtr->GetLabel(iLabelIndex)->Color = TLabelArray::CreateRandomColor();
        if (iLabelIndex < (LabelArrayPtr->GetLabelArraySize() - 1)) {
            iLabelIndex++;
        }
        else {
            iLabelIndex = 0;
        }
    }
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {
    Randomize();
 
    LabelArrayPtr = new TLabelArray();
    LabelArrayPtr->AddLabel(Label1);
    LabelArrayPtr->AddLabel(Label2);
    LabelArrayPtr->AddLabel(Label3);
    LabelArrayPtr->AddLabel(Label4);
    LabelArrayPtr->AddLabel(Label5);
 
    LabelArrayPtr->SetTransparent(false);
 
    Timer1->Interval = 50;
    Timer1->Enabled = true;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender) {
    if (LabelArrayPtr) {
        delete LabelArrayPtr;
    }
}
// ---------------------------------------------------------------------------
Добавлено через 3 минуты
Я там модифицировал класс с метками и сделал, наверное, то, что ты хотел))
0
3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29
30.04.2011, 16:24  [ТС]
Все Спасибо остальное сам доделал, должно пойти)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2011, 16:24
Помогаю со студенческими работами здесь

Массив цветов. Как изменить цвет текста label при отталкивании объекта от формы
Здравствуйте! Имеется вот такая программа, нужно чтобы при отталкивании лэйбла от формы, цвет текста в нем менялся. Массив цветов создан а...

Построить целочисленный массив, содержащий номера тех строк массива А, элементы которых расположены в возрастающем порядке.
Нужно решить эту задачу в C# Дан прямоугольный массив А. Построить целочисленный массив, содержащий номера тех строк массива А,...

Задание: Определить сколько различных сигналов могло быть подано m флажками различных цветов
Задание: Определить сколько различных сигналов могло быть подано m флажками различных цветов. Отличие сигналов заколючается в порядке...

Организуйте массив, содержащий 15 различных символов
Организуйте массив, содержащий 15 различных символов. Отсортируйте его по убыванию. На экран выведите массив до сортировки и после...

Создать проект содержащий: ComBobox, StringGrid, Button, RadioGroup, Label
Здравствуйте. Я не давно познакомилась с делфи 2007. Мне дали задание создать проект содержащий: combobox, stirnggrid, button, radiogroup,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru