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

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

29.04.2011, 20:33. Показов 1672. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru