0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21

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

13.08.2014, 18:14. Показов 5436. Ответов 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
33465 / 21564 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru