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

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

13.08.2014, 18:14. Показов 5169. Ответов 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
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
13.08.2014, 23:16
Проблема в общем понятна. Могу лишь предложить использовать "внешний" компонент, который подобным требованиям удовлетворяет__
Вложения
Тип файла: zip BitButColor.zip (9.9 Кб, 13 просмотров)
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 07:51
Тупое решение "в лоб"
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
  if(BitBtn2->Font->Color == clRed) return;
  else
   {
     //Тут весь код обработчика
     ShowMessage("Я работаю");
   }
}
Да, кнопка будет нажиматься, но, если цвет надписи красный, ничего происходить не будет.
Соответственно, если необходимо кнопку "заблокировать", пишем
C++
1
BitBtn2->Font->Color = clRed
"Разблокировать"
C++
1
BitBtn2->Font->Color = clGreen
Добавлено через 33 минуты
Еще один костыль
Помещаем на форму компонент Panel, со свойствами BevelInner, BevelKind, BevelOuter == bvNone (для BevelKind -bkNone). На панель кидаем BitBtn и подгоняем размер панели к размеру кнопки.
Пишем функцию блокировки/разблокировки кнопки.
Файл h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Vcl.Buttons.hpp>
#include <Vcl.ExtCtrls.hpp>
enum LockMode {lmLock, lmUnlock}; // <<== Вот это добавить
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TBitBtn *BitBtn1;
    TBitBtn *BitBtn2;
    TPanel *Panel1;
    TBitBtn *BitBtn3;
    void __fastcall BitBtn1Click(TObject *Sender);
    void __fastcall BitBtn2Click(TObject *Sender);
private:    // User declarations
    void __fastcall Locker(TPanel *P, TBitBtn *B, int Mode); //<<== Вот это добавить
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
Файл cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Locker(TPanel *P, TBitBtn *B, int Mode)
{
  switch(Mode)
   {
     case 0 : P->Enabled = false;
        B->Font->Color = clRed;
        break;
     case 1 : P->Enabled = true;
        B->Font->Color = clGreen;
        break;
   }
}
Вызов блокировки
C++
1
Locker(Panel1, BitBtn3, lmLock);
Вызов разблокировки
C++
1
Locker(Panel1, BitBtn3, lmUnlock);

Не по теме:

Красота требует жертв

0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 09:02  [ТС]
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
#include <vcl.h>
#include "Launcher.h"
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
int MENU;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
void __fastcall TForm1::N2Click(TObject *Sender)
{
  ((TMenuItem *)Sender)->Checked = true;
   MENU = ((TMenuItem *)Sender)->Tag;
   BitBtn1->Caption = ((TMenuItem *)Sender)->Caption;
   BitBtn1->Enabled = true;
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  switch(MENU)
   {
     case 1: ShellExecute(0,"open","cmd.exe",0,SW_SHOW);
     break;
     case 2: ShellExecute(0,"open","cmd.exe",0,SW_SHOW);
     break;
   }
}

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
//---------------------------------------------------------------------------
 
#ifndef LauncherH
#define LauncherH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Menus.hpp>
#include <Vcl.Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TMainMenu *MainMenu1;
    TMenuItem *N1;
    TMenuItem *N2;
    TMenuItem *N3;
    TBitBtn *BitBtn1;
    void __fastcall N2Click(TObject *Sender);
    void __fastcall N5Click(TObject *Sender);
    void __fastcall BitBtn1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Добавлено через 54 секунды
У меня самого Switch Case

Добавлено через 50 секунд
И как это всё объединить в моём проекте ?

Добавлено через 2 минуты
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 09:04
Цитата Сообщение от Deiemamancommen Посмотреть сообщение
Это что две case будет ?
Да хоть 88... В чем проблема-то?
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 09:06  [ТС]
RGB мне нужно!

Добавлено через 1 минуту
Нет,главное чтобы работало!(Про case)
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 09:08
Цитата Сообщение от Deiemamancommen Посмотреть сообщение
RGB мне нужно!
Где и зачем?
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 09:13  [ТС]
Проблема во мне,я понимаю как правильно объединить этих два кода

Добавлено через 1 минуту
RGB любой цвет можно выбрать
http://www.stm.dp.ua/web-design/color-html.php

Добавлено через 1 минуту
C++
1
2
BitBtn1->Font->Color = RGB (0, 255, 0);//Шрифт не блокированной кнопки
BitBtn1->Font->Color = RGB (255, 0, 0);//Шрифт блокированной кнопки
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 11:22
Вот пример (надеюсь, ты понимаешь, что такое ПРИМЕР) твоего лончера
Вложения
Тип файла: rar 1.rar (82.2 Кб, 10 просмотров)
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 15:26  [ТС]
И что толку ?
Второй скриншот Enabled->False
Кнопка разблокируется после выбора и меняет на зеленый шрифт
Блокированная кнопка второй скриншот должен быть красный шрифт,а не серый
Изображения
  
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 15:35  [ТС]
Как быть ?

Добавлено через 8 минут
Нужен красный шрифт блокированной кнопки а не серый!
Когда выбрали пункт в меню кнопка меняет с красного шрифта на зеленый
По умолчанию кнопка блокированна Enabled->False (серый шрифт) <-Здесь красный за место серого
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 15:37
Да не поверишь...
Рис. 1 - старт программы, кнопка заблокирована
Рис. 2 - Когда выбран какой-то пункт меню, кнопка разблокирована.
Ты вообще мой проект без изменений запускал? Если что-то менял - показывай, что именно.
Изображения
  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
14.08.2014, 15:41
Deiemamancommen, собственно, вопрос: а когда должна разблокироваться кнопка? Заблокировать - понятно, когда ты запустил приложение. А назад?
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 15:50  [ТС]
Вы меня успокоили!
Хотел блокированная кнопка самая серая а шрифт красный

Добавлено через 4 минуты
Запустил свое приложение
1.Кнопка будет заблокирована пока не будет выбран любой пункт в меню (Цвет шрифта красный)
2.Как только выбран пункт кнопка разблокируется(Цвет шрифта зеленый)

P.S Особенность кнопки
Блокированная кнопка самая серая а шрифт красный
Разблокированная кнопка,простой вид и шрифт зеленый

Добавлено через 3 минуты
D1973,просто блокированная кнопка вид смотриться как будто кнопка готова к работе
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 15:51

Не по теме:

Цитата Сообщение от Deiemamancommen Посмотреть сообщение
Хотел блокированная кнопка самая серая а шрифт красный
Ничего не понял...


Я так понял: при старте приложения кнопка блокирована (цвет красный). Когда пользователь выбирает что-то из меню, кнопка разблокируется (цвет зеленый). Может не прав я, но ничего более путнего из объяснений я не вынес.
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 15:56  [ТС]
Кнопка сама серая как положено быть блокированной кнопке,но шрифт КРАСНЫЙ а не СЕРЫЙ
Последный ответ правильно сказали
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 16:00
Цитата Сообщение от Deiemamancommen Посмотреть сообщение
смотриться как будто кнопка готова к работе
Ну дык дизабли ее и не парься с цветом...
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 16:04  [ТС]
И как это сделать ?
Мне надо чтобы был цветной шрифт

Добавлено через 46 секунд
Тык шрифт будет серым
0
Модератор
 Аватар для D1973
9925 / 6461 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
14.08.2014, 16:14
Ну другого варианта я не вижу. Или она смотрится, как рабочая, но с красным шрифтом и не работает, или она отключена, но шрифт серый. Разве что компонент установить, который nick42 предложил.
0
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 21
14.08.2014, 16:31  [ТС]
Как этот компонент устанавливаеться ?

Добавлено через 2 минуты
У меня только:
C++ Builder XE5 и C++ Builder XE6

Добавлено через 5 минут
как их установить ?

Добавлено через 5 минут
как их установить чтобы цвета работали ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2014, 16:31
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru