Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21

Изменить цвет надписи на заблокированной TBitButton

13.08.2014, 18:14. Показов 5377. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Form1->Color = RGB (245, 51, 164);//Цвет формы
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
BitBtn1->Font->Color = RGB (0, 255, 0);//Шрифт не блокированной кнопки
ShellExecute(0, L"open", L"cmd.exe", 0, 0, SW_SHOWNORMAL);
BitBtn1->Enabled = false;
BitBtn1->Font->Color = RGB (255, 0, 0);//Шрифт блокированной кнопки
}





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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TBitBtn *BitBtn1;
    void __fastcall BitBtn1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif




Создан новый проект для пробы
Цвет Формы
Цвет самой кнопки BitBtn
Цвет шрифта BitBtn
Что не правильно делаю ?

Добавлено через 9 минут
Цвет не меняется после нажатия

Добавлено через 1 минуту
Разблокированная кнопка цвет шрифта:Зеленый
Заблокированная кнопка шрифта:Красный

Добавлено через 4 минуты
Цвет шрифта блокированный кнопки:Серый
А нужно чтобы был красный шрифт
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2014, 18:14
Ответы с готовыми решениями:

как взять надписи в каробочки ? и изменить им цвет
&lt;div id=menu&gt; &lt;font size=&quot;+2&quot;&gt; &lt;p align=&quot;center&quot;&gt;&lt;a...

Как изменить цвет фона надписи по событию?
Access 2016 Как сделать чтобы при смене значения &quot;Флажка&quot;(True/False) менялся цвет фона надписи? В данном случае надпись...

По нажатию на кнопку (Button) изменить цвет надписи (Label)
Здравствуйте. Начал работать с оконными приложениями, кто-нибудь объясните как их писать? На примере одной из задач: 1. Реализовать...

45
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
15.08.2014, 13:43  [ТС]
Студворк — интернет-сервис помощи студентам
Вернулись к варианту от D1973 Опять тоже самое!
Рабочая блокированная кнопка,и исходник не скомпилировать на RAD Studio XE6
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
15.08.2014, 13:59
Цитата Сообщение от nick42 Посмотреть сообщение
Ну, так речь идет о BitBtn же.
Да, на BitBtn работает. Был не прав, извиняюсь.

В общем ничего у меня так и не получилось. Но я честно старался. Красивого решения предоставить не могу.
Зато я создал чудовище, монстра, мать его, франкенштейна из всех предложенных вариантов. За такой оверинженеринговый подход конечно надо укорительно смотреть и качать головой, но оно работает. Без сторонних компонентов, зато с расширенным старым.
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
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.Buttons.hpp>
//---------------------------------------------------------------------------
#define MyMessage WM_USER
 
namespace TextColorBitBtn
{
    class TBitBtn : public Buttons::TBitBtn
        {
        private:
            TLabel *Label;
            TColor ADisabledTColor;
        protected:
            MESSAGE void __fastcall WMEnable( TWMEnable& message )
                {
                if( message.Enabled )
                    {
                    this->Caption = this->Label->Caption;
                    this->Label->Caption = "";
                    }
                else
                    {
                    this->Label->Caption = this->Caption;
                    this->Caption = "";
                    }
                this->Label->Visible = !message.Enabled;
 
                SendMessage( this->Handle, WM_SIZE, 0, MAKEWPARAM( this->Width, this->Height ) );
                }
            MESSAGE void __fastcall WMSize( TWMSize& message )
                {
                this->Label->Top  = message.Height/2
                                    - this->Label->Canvas->TextHeight( Label->Caption )/2;
                this->Label->Left = message.Width/2
                                    - this->Label->Canvas->TextWidth( Label->Caption )/2;
                }
        public:
        __fastcall virtual TBitBtn( TComponent* AOwner )
            : Buttons::TBitBtn( AOwner ),
              ADisabledTColor( static_cast<TPanel*>( AOwner )->Font->Color )
            {
            this->Label = new TLabel( this );
            this->Label->Parent = this;
            this->Label->Font->Color = ADisabledTColor;
            };
 
        __property TColor DisabledTextColor = { read = ADisabledTColor, write = DisabledTColor };
        void __fastcall DisabledTColor( TColor newColor )
            {
            ADisabledTColor = newColor;
            this->Label->Font->Color = ADisabledTColor;
            }
 
 
        BEGIN_MESSAGE_MAP
            MESSAGE_HANDLER( WM_SIZE, TWMSize , WMSize );
            MESSAGE_HANDLER( WM_ENABLE, TWMEnable , WMEnable );
        END_MESSAGE_MAP( Buttons::TBitBtn );
        };
}
#define TBitBtn TextColorBitBtn::TBitBtn
 
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TBitBtn *BitBtn1;
    TButton *BEnableBitBtn;
    TButton *BDisableBitBtn;
    void __fastcall BDisableBitBtnClick(TObject *Sender);
    void __fastcall BEnableBitBtnClick(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Испоьзование:
C++
1
2
3
4
5
6
7
8
9
10
11
12
//---------------------------------------------------------------------------
void __fastcall TForm1::BDisableBitBtnClick(TObject *Sender)
{
BitBtn1->DisabledTextColor = rand() % 32768; //clRed;
BitBtn1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BEnableBitBtnClick(TObject *Sender)
{
BitBtn1->Enabled = true;
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Deiemamancommen Посмотреть сообщение
не скомпилировать на RAD Studio XE6
На шестом и на XE3 проверено.

0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
15.08.2014, 14:04  [ТС]
Последний вариант
Когда кнопка заблокирована она на уровне формы или можно немного утопить ее в форме (Цвет шрифта красный)
Высота разблокированной кнопки чуть выше формы (Цвет шрифта зеленый)

Реально ли сделать ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33450 / 21550 / 8248
Регистрация: 22.10.2011
Сообщений: 37,002
Записей в блоге: 12
15.08.2014, 14:09
BRcr, там кода будет под 2 сотни строк, оно мне надо, из-за какого-то цвета шрифта туда лезть? Тем более, что ТС все время что-то к требованию добавляет, а потом переписывай эту тучу кода... Не опережу, подожду чего ты наваяешь
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
15.08.2014, 14:46
Цитата Сообщение от UI Посмотреть сообщение
там кода будет под 2 сотни строк, оно мне надо, из-за какого-то цвета шрифта туда лезть?
Так не ради тс, а ради нас страждущих и немощных будущего всех, кто столкнется с подобным вопросом.

Deiemamancommen, мой вариант не понравился?
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
15.08.2014, 16:20  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
мой вариант не понравился?
все варианты рассматриваются,в том числе и ваш

Добавлено через 10 минут
Цитата Сообщение от BRcr Посмотреть сообщение
Можно еще попробовать модифицировать поведение TButton с помощью класса-перехватчика, раз так зудит. Но не раньше следующей недели прикольнусь, если UI не опередит...
Удачи..
Вряд ли что то получиться,хочу посмотреть что там будет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2014, 16:20

Как изменить курсор у заблокированной формы?
Из-за того, что я блокирую форму (Shadow.Enabled := False) у меня когда курсор мыши находится над этой формой не отображается курсор,...

Как менять цвет фона и цвет надписи кнопки?
Есть кнопка, хочу произвольно менять цвет фона и цвет надписи(в зависимости от цвета кнопки). Если прописать...

Сменить цвет надписи...
Помогите пожалуйста!:( Задание: Сменить цвет надписи, чередуя цвета(синий, красный, белый), через 2 секунды времени(не используя...

Заменить цвет надписи в Делфи
Есть желто-синяя форма, цвета расположены горизонтально, половина синяя, половина желтая. На форме метка с красной надписью. Половина...

Переключение изменяя цвет надписи
Предположим есть несколько ссылок, при на ведении на них они выделяются оранжевым цветом, а как сделать так чтобы, например, если кликнуть...


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

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru