3 / 3 / 2
Регистрация: 21.01.2011
Сообщений: 29

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

29.04.2011, 20:33. Показов 1651. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru