Как поменять цвет кнопки в делфи

Как поменять цвет кнопки в делфи

Казалось бы — что может быть проще, чем изменить цвет кнопки типа TButton в Delphi?
Ан нет. Не так все просто. Бьюсь уже второй час.
Подскажите пожалуйста как можно изменить цвет кнопки, не использую сторонних компонент?

Всем заранее спасибо!


ЮЮ © ( 2005-01-13 12:41 ) [1]

Изменить оформление Windows. TButton в Delphi — это родная кнопка Windos — а они во всей системе одного цвета.


Neznaika © ( 2005-01-13 12:42 ) [2]

TButton не изменишь!
Используй BitBtn или другие компоненты.


Vetal © ( 2005-01-13 12:54 ) [3]

ЮЮ> Изменить оформление Windows не катит. Нужно изменить цвет только одной кнопки в приложении..

Neznaika>> Хорошо, а как можно изменить цвет кнопки, если она TBitBtn?


TButton © ( 2005-01-13 12:55 ) [4]


Семен Сорокин © ( 2005-01-13 13:02 ) [5]

Можно и у TButton:
MakeObjectInstance + FreeObjectInstance (или SetWindowLong), а также сообщения WM_ERASEBKGND/WM_PAINT

PS. ИМХО не стоит геморроя, проще использовать TBitBtn


TUser © ( 2005-01-13 13:15 ) [6]


> TButton в Delphi — это родная кнопка Windos — а они во всей
> системе одного цвета

И тем не менее есть компоненты, которые изменяют стиль оформления программы, в т.ч. и цвет TButton"ов.


Vetal © ( 2005-01-13 13:23 ) [7]

Так а как все-таки изменить цвет TBitBtn?


Neznaika © ( 2005-01-13 13:24 ) [8]

>>Vetal © (13.01.05 12:54) [3]

Наложить картинку однотонную 😉


Vetal © ( 2005-01-13 13:31 ) [9]

Через свойство Glyph что ли?
Так по краям будет серенькое все.


Neznaika © ( 2005-01-13 13:38 ) [10]

Vetal по-моему там все это регулируется, сейчас уже не помню как но у меня это получалось.


WhiteGuy © ( 2005-01-13 13:42 ) [11]

Vetal,зайди на torry.net — там есть такие компоненты!! типa RbControls[RbButton]


Vetal © ( 2005-01-13 13:53 ) [12]

Короче, сделал TPanel, заполнял его цвет. А по клину менял стиль с Uppered на Lowered и наоборот.

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

Должен ли я использовать «стили», чтобы сделать это или .

Вы можете изменить свойство button.StyleLookup изменить стиль (цвет).

Вам нужно добавить новый стиль к Stylebook.

  1. Выберите «Изменить свой стиль . » в меню правой кнопки мыши с кнопки.
  2. Измените свойство Fill.Color из элементов TRectangle под фоном: TRectangle
  3. Применить и закрыть Stylebook
  4. Ясно button.stylelookup
  5. Изменение button.stylelookup в вашем ButtonClick к новому создавать стиль, когда вы не изменяли имя его Button1Style1
Читайте также:  Ricoh sp 100su drivers

Использование стилей

Альтернатива созданию другого стиля и переключение на этот новый стиль будет создавать собственный стиль для кнопки и изменений цвета в этом стиле во время выполнения.

  1. Щелкните правой кнопкой мыши на кнопку и выберите «Изменить свой стиль . » в главном меню.
  2. Нажмите кнопку Применить и Закрыть в редакторе стилей.

Вы только что создали свой стиль для кнопки. Поэтому, когда вы изменить его во время выполнения, это будет влиять только на эту кнопку.

Теперь введите в вашем случае OnClick для изменения цвета во время выполнения:

Примечание: Добавить FMX.Objects в вашей статье изез, если вы уже не имеете его. Вот где TRectangle есть.

Но ждать.

Вы заметите, что цвет кнопки изменяется обратно по умолчанию, когда мышь оставить или входит кнопку. Это связано с анимацией. Если установить свойство StyleName для обоего элементов TColorAnimation стиля в редакторе стилей для пользовательского стиля, вы также можете установить цвет на них. В моем примере я назвал TColorAnimations coloranimation1 и coloranimation2.

Кнопка с рисунком в Delphi представлена компонентом BitBtn, класс которой TBitBtn порожден непосредственно от класса TButton стандартной кнопки Button. Кнопка с рисунком отличается от стандартной кнопки тем, что помимо заголовка на ней можно отобразить растровое изображение. Видом и размещением изображения на поверхности кнопки BitBtn можно управлять с помощью свойств.

Свойство Glyph

Свойство Glyph типа TBitmap определяет растровый рисунок кнопки. По умолчанию свойство Glyph имеет значение None, т. е. кнопка не содержит рисунок. Рисунок может содержать до трех отдельных изображений (глифов). Какое именно изображение выводится на кнопке, зависит от ее текущего состояния:

  • первое изображение отображается, если кнопка не нажата (по умолчанию);
  • второе изображение отображается, если кнопка неактивна и не может быть выбрана;
  • третье изображение отображается, когда кнопка нажата (выполнен щелчок).

Панель для выбора ресунков (скриншот выше) вызываеться по нажатию на кнопку с тремя точками ввозле свойства Glyph (скриншот ниже).

Читайте также:  Зарегистрироваться в айклауд с компьютера

При использовании нескольких изображений они должны быть подготовлены и сохранены в одном файле растрового формата BMP. Подготовить рисунок для кнопки можно в графическом редакторе. (например с помощью редактора Image Editor, входящего в состав Delphi или Adobe Photoshop). Все отдельные изображения в рисунке должны располагаться без промежутков в горизонтальной строке и иметь одинаковую высоту и ширину (как правило, 16×16 пикселов). По умолчанию левый нижний пиксел каждого рисунка определяет фоновый цвет рисунка. Обычно ему задают цвет поверхности кнопки (значение clBtnFace), при этом все пикселы изображения, имеющие тот же цвет, будут не видны, т. е. являются прозрачными. По этой причине фоновый цвет также называют прозрачным. Если установить, например, желтый цвет фонового пиксела, то фон изображения тоже станет желтым.

Изменить режим отображения картинки в случае, когда фоновый цвет задается левым нижним пикселом рисунка, можно, установив значения его взаимосвязанных свойств TransparentColor и TransparentMode. Для восстановления режима отображения по умолчанию нужно установить свойство TransparentMode в значение tmAuto.

Используя рисунок с несколькими различными изображениями, можно при нажатии кнопки воспроизводить на ее поверхности простейшую анимацию. Для этого первое и третье изображения должны различаться не только цветом, но и видом и расположением фигур. Отметим, что для реализации более сложной анимации можно использовать компонент Animate, расположенный непосредственно на кнопке.

Cвойство NumGlyph

Количество изображений указывается в свойстве NumGlyph типа TNumGiyphs. По умолчанию свойство NumGlyph имеет значение 1, и на кнопке всегда отображается первое изображение.

Cвойство Kind

Delphi предлагает для кнопки BitBtn несколько предопределенных видов, выбираемых с помощью свойства Kind типа TBitBtnKind. При выборе какого-либо вида для кнопки на ней отображается соответствующий глиф. Для задания вида кнопки могут использоваться следующие константы:

  • bkCustom— на кнопке имеется выбранное изображение; первоначально изображение отсутствует, и его нужно загружать дополнительно;
  • bkOK — на кнопке имеются глиф «зеленая галочка» и текст ОК; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrOK;
  • bkCancel — на кнопке имеются глиф «красный знак х» и текст Cancel; свойство Cancel кнопки установлено в значение True, а свойство ModalResult— в значение
  • mrCancel;
  • bkYes— на кнопке имеются глиф «зеленая галочка» и текст Yes; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrYes;
  • bkNo — на кнопке имеются глиф «красная перечеркнутая окружность» и текст No; свойства Cancel кнопки установлено в значение True, а свойство ModalResult — в значение mrNO;
  • bkHelp— на кнопке имеются глиф «сине-зеленый вопросительный знак» и текст Help;
  • bkClose — на кнопке имеются глиф «дверь с обозначением выхода» и текст Close; при нажатии кнопки форма автоматически закрывается;
  • bkAbort — на кнопке имеются глиф «красный знак х» и текст Abort;
  • bkRetry— на кнопке имеются глиф «зеленая стрелка повтора операции» и текст Retry;
  • bkIgnore — на кнопке имеются глиф «игнорирование» и текст Ignore;
  • bkAll — на кнопке имеются глиф «двойная зеленая галочка» и текст Yes to All.
Читайте также:  Для чего нужен конденсатор в зарядном устройстве

По умолчанию свойство Kind имеет значение bkCustom, и пользователь может сам выбирать изображение, управляя свойством. Не рекомендуется изменять свойство Glyph для предопределенных кнопок (например, для кнопки Close), т. к. в этом случае кнопка не будет выполнять закрепленные за ней действия (в данном случае закрытие окна).

Cвойство Layout

Расположением изображения на поверхности кнопки относительно текста управляет свойство Layout типа TButtonLayout, принимающее следующие значения:

  • blGlyphLeft (изображение слева от текста) — по умолчанию;
  • blGlyphRight (изображение справа от текста);
  • blGlyphTop (изображение над текстом);
  • blGlyphBottom (изображение под текстом).

Cвойство Margin

С помощью свойства Margin типа Integer можно управлять выравниванием глифа и текста относительно сторон кнопки. Это свойство задает расстояние в пикселах между стороной кнопки и изображением и по умолчанию имеет значение −1, что означает расположение глифа и текста по центру кнопки. Сторона, относительно которой производится выравнивание, определяется свойством Layout. Например, если значение Layout равно blGlyphLeft, то выравнивание выполняется по левой стороне кнопки.

На скриншоте показаны варианты выравнивания изображения и текста, соответствующие разным значениям свойства Margin.

Свойство Spacing

Свойство Spacing типа Integer определяет размер (в пикселах) промежутка, отделяющего глиф от текста. По умолчанию значение этого свойства равно 4 пикселам. Если значение этого свойства равно −1, то имеет место центрирование текста между краем глифа и дальней от него стороной кнопки.

На скриншоте показано использование различных значений свойства Spacing, отображенных в виде текста на кнопках.

Ссылка на основную публикацию
Как поменять вид диспетчера задач
А вот вопрос.почему каждый раз когда я выключаю компьютер а на следующий день включаю появляется надпись некорректное выключение. 30-04-2013 в...
Как перевести с одной карты на другую
Перевести деньги с одной карты Сбербанка на другую можно легко, достаточно знать номер только номер карты или номер мобильного телефона...
Как перевести рубли в тысячи в excel
Отображение в MS EXCEL ЧИСЕЛ в формате миллионов и тысяч ​Смотрите также​ 1000, выделяете диапозон​ рублях в тысячи​В1 - Стоимость​#...
Как поменять билеты ржд купленные через интернет
В жизни всегда есть место непредвиденным обстоятельствам. Если срочно потребовалось обменять или вернуть заранее приобретенный билет на более подходящий, это...

Как поменять цвет кнопки в делфи

Казалось бы — что может быть проще, чем изменить цвет кнопки типа TButton в Delphi?
Ан нет. Не так все просто. Бьюсь уже второй час.
Подскажите пожалуйста как можно изменить цвет кнопки, не использую сторонних компонент?

Всем заранее спасибо!


ЮЮ © ( 2005-01-13 12:41 ) [1]

Изменить оформление Windows. TButton в Delphi — это родная кнопка Windos — а они во всей системе одного цвета.


Neznaika © ( 2005-01-13 12:42 ) [2]

TButton не изменишь!
Используй BitBtn или другие компоненты.


Vetal © ( 2005-01-13 12:54 ) [3]

ЮЮ> Изменить оформление Windows не катит. Нужно изменить цвет только одной кнопки в приложении..

Neznaika>> Хорошо, а как можно изменить цвет кнопки, если она TBitBtn?


TButton © ( 2005-01-13 12:55 ) [4]


Семен Сорокин © ( 2005-01-13 13:02 ) [5]

Можно и у TButton:
MakeObjectInstance + FreeObjectInstance (или SetWindowLong), а также сообщения WM_ERASEBKGND/WM_PAINT

PS. ИМХО не стоит геморроя, проще использовать TBitBtn


TUser © ( 2005-01-13 13:15 ) [6]


> TButton в Delphi — это родная кнопка Windos — а они во всей
> системе одного цвета

И тем не менее есть компоненты, которые изменяют стиль оформления программы, в т.ч. и цвет TButton"ов.


Vetal © ( 2005-01-13 13:23 ) [7]

Так а как все-таки изменить цвет TBitBtn?


Neznaika © ( 2005-01-13 13:24 ) [8]

>>Vetal © (13.01.05 12:54) [3]

Наложить картинку однотонную 😉


Vetal © ( 2005-01-13 13:31 ) [9]

Через свойство Glyph что ли?
Так по краям будет серенькое все.


Neznaika © ( 2005-01-13 13:38 ) [10]

Vetal по-моему там все это регулируется, сейчас уже не помню как но у меня это получалось.


WhiteGuy © ( 2005-01-13 13:42 ) [11]

Vetal,зайди на torry.net — там есть такие компоненты!! типa RbControls[RbButton]


Vetal © ( 2005-01-13 13:53 ) [12]

Короче, сделал TPanel, заполнял его цвет. А по клину менял стиль с Uppered на Lowered и наоборот.

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

Должен ли я использовать «стили», чтобы сделать это или .

Вы можете изменить свойство button.StyleLookup изменить стиль (цвет).

Вам нужно добавить новый стиль к Stylebook.

  1. Выберите «Изменить свой стиль . » в меню правой кнопки мыши с кнопки.
  2. Измените свойство Fill.Color из элементов TRectangle под фоном: TRectangle
  3. Применить и закрыть Stylebook
  4. Ясно button.stylelookup
  5. Изменение button.stylelookup в вашем ButtonClick к новому создавать стиль, когда вы не изменяли имя его Button1Style1
Читайте также:  Зарегистрироваться в айклауд с компьютера

Использование стилей

Альтернатива созданию другого стиля и переключение на этот новый стиль будет создавать собственный стиль для кнопки и изменений цвета в этом стиле во время выполнения.

  1. Щелкните правой кнопкой мыши на кнопку и выберите «Изменить свой стиль . » в главном меню.
  2. Нажмите кнопку Применить и Закрыть в редакторе стилей.

Вы только что создали свой стиль для кнопки. Поэтому, когда вы изменить его во время выполнения, это будет влиять только на эту кнопку.

Теперь введите в вашем случае OnClick для изменения цвета во время выполнения:

Примечание: Добавить FMX.Objects в вашей статье изез, если вы уже не имеете его. Вот где TRectangle есть.

Но ждать.

Вы заметите, что цвет кнопки изменяется обратно по умолчанию, когда мышь оставить или входит кнопку. Это связано с анимацией. Если установить свойство StyleName для обоего элементов TColorAnimation стиля в редакторе стилей для пользовательского стиля, вы также можете установить цвет на них. В моем примере я назвал TColorAnimations coloranimation1 и coloranimation2.

Кнопка с рисунком в Delphi представлена компонентом BitBtn, класс которой TBitBtn порожден непосредственно от класса TButton стандартной кнопки Button. Кнопка с рисунком отличается от стандартной кнопки тем, что помимо заголовка на ней можно отобразить растровое изображение. Видом и размещением изображения на поверхности кнопки BitBtn можно управлять с помощью свойств.

Свойство Glyph

Свойство Glyph типа TBitmap определяет растровый рисунок кнопки. По умолчанию свойство Glyph имеет значение None, т. е. кнопка не содержит рисунок. Рисунок может содержать до трех отдельных изображений (глифов). Какое именно изображение выводится на кнопке, зависит от ее текущего состояния:

  • первое изображение отображается, если кнопка не нажата (по умолчанию);
  • второе изображение отображается, если кнопка неактивна и не может быть выбрана;
  • третье изображение отображается, когда кнопка нажата (выполнен щелчок).

Панель для выбора ресунков (скриншот выше) вызываеться по нажатию на кнопку с тремя точками ввозле свойства Glyph (скриншот ниже).

Читайте также:  Как включить мобильный интернет на леново

При использовании нескольких изображений они должны быть подготовлены и сохранены в одном файле растрового формата BMP. Подготовить рисунок для кнопки можно в графическом редакторе. (например с помощью редактора Image Editor, входящего в состав Delphi или Adobe Photoshop). Все отдельные изображения в рисунке должны располагаться без промежутков в горизонтальной строке и иметь одинаковую высоту и ширину (как правило, 16×16 пикселов). По умолчанию левый нижний пиксел каждого рисунка определяет фоновый цвет рисунка. Обычно ему задают цвет поверхности кнопки (значение clBtnFace), при этом все пикселы изображения, имеющие тот же цвет, будут не видны, т. е. являются прозрачными. По этой причине фоновый цвет также называют прозрачным. Если установить, например, желтый цвет фонового пиксела, то фон изображения тоже станет желтым.

Изменить режим отображения картинки в случае, когда фоновый цвет задается левым нижним пикселом рисунка, можно, установив значения его взаимосвязанных свойств TransparentColor и TransparentMode. Для восстановления режима отображения по умолчанию нужно установить свойство TransparentMode в значение tmAuto.

Используя рисунок с несколькими различными изображениями, можно при нажатии кнопки воспроизводить на ее поверхности простейшую анимацию. Для этого первое и третье изображения должны различаться не только цветом, но и видом и расположением фигур. Отметим, что для реализации более сложной анимации можно использовать компонент Animate, расположенный непосредственно на кнопке.

Cвойство NumGlyph

Количество изображений указывается в свойстве NumGlyph типа TNumGiyphs. По умолчанию свойство NumGlyph имеет значение 1, и на кнопке всегда отображается первое изображение.

Cвойство Kind

Delphi предлагает для кнопки BitBtn несколько предопределенных видов, выбираемых с помощью свойства Kind типа TBitBtnKind. При выборе какого-либо вида для кнопки на ней отображается соответствующий глиф. Для задания вида кнопки могут использоваться следующие константы:

  • bkCustom— на кнопке имеется выбранное изображение; первоначально изображение отсутствует, и его нужно загружать дополнительно;
  • bkOK — на кнопке имеются глиф «зеленая галочка» и текст ОК; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrOK;
  • bkCancel — на кнопке имеются глиф «красный знак х» и текст Cancel; свойство Cancel кнопки установлено в значение True, а свойство ModalResult— в значение
  • mrCancel;
  • bkYes— на кнопке имеются глиф «зеленая галочка» и текст Yes; свойство Default кнопки установлено в значение True, а свойство ModalResult — в значение mrYes;
  • bkNo — на кнопке имеются глиф «красная перечеркнутая окружность» и текст No; свойства Cancel кнопки установлено в значение True, а свойство ModalResult — в значение mrNO;
  • bkHelp— на кнопке имеются глиф «сине-зеленый вопросительный знак» и текст Help;
  • bkClose — на кнопке имеются глиф «дверь с обозначением выхода» и текст Close; при нажатии кнопки форма автоматически закрывается;
  • bkAbort — на кнопке имеются глиф «красный знак х» и текст Abort;
  • bkRetry— на кнопке имеются глиф «зеленая стрелка повтора операции» и текст Retry;
  • bkIgnore — на кнопке имеются глиф «игнорирование» и текст Ignore;
  • bkAll — на кнопке имеются глиф «двойная зеленая галочка» и текст Yes to All.
Читайте также:  Ricoh sp 100su drivers

По умолчанию свойство Kind имеет значение bkCustom, и пользователь может сам выбирать изображение, управляя свойством. Не рекомендуется изменять свойство Glyph для предопределенных кнопок (например, для кнопки Close), т. к. в этом случае кнопка не будет выполнять закрепленные за ней действия (в данном случае закрытие окна).

Cвойство Layout

Расположением изображения на поверхности кнопки относительно текста управляет свойство Layout типа TButtonLayout, принимающее следующие значения:

  • blGlyphLeft (изображение слева от текста) — по умолчанию;
  • blGlyphRight (изображение справа от текста);
  • blGlyphTop (изображение над текстом);
  • blGlyphBottom (изображение под текстом).

Cвойство Margin

С помощью свойства Margin типа Integer можно управлять выравниванием глифа и текста относительно сторон кнопки. Это свойство задает расстояние в пикселах между стороной кнопки и изображением и по умолчанию имеет значение −1, что означает расположение глифа и текста по центру кнопки. Сторона, относительно которой производится выравнивание, определяется свойством Layout. Например, если значение Layout равно blGlyphLeft, то выравнивание выполняется по левой стороне кнопки.

На скриншоте показаны варианты выравнивания изображения и текста, соответствующие разным значениям свойства Margin.

Свойство Spacing

Свойство Spacing типа Integer определяет размер (в пикселах) промежутка, отделяющего глиф от текста. По умолчанию значение этого свойства равно 4 пикселам. Если значение этого свойства равно −1, то имеет место центрирование текста между краем глифа и дальней от него стороной кнопки.

На скриншоте показано использование различных значений свойства Spacing, отображенных в виде текста на кнопках.

Ссылка на основную публикацию
Как поменять вид диспетчера задач
А вот вопрос.почему каждый раз когда я выключаю компьютер а на следующий день включаю появляется надпись некорректное выключение. 30-04-2013 в...
Как перевести с одной карты на другую
Перевести деньги с одной карты Сбербанка на другую можно легко, достаточно знать номер только номер карты или номер мобильного телефона...
Как перевести рубли в тысячи в excel
Отображение в MS EXCEL ЧИСЕЛ в формате миллионов и тысяч ​Смотрите также​ 1000, выделяете диапозон​ рублях в тысячи​В1 - Стоимость​#...
Как поменять билеты ржд купленные через интернет
В жизни всегда есть место непредвиденным обстоятельствам. Если срочно потребовалось обменять или вернуть заранее приобретенный билет на более подходящий, это...
Adblock detector