Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раскрасить кнопку или надпись на ней... ... Возможно или нет? 
:(
    Опции темы
bagira
  Дата 16.4.2004, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



Вот, значит, какое дело: пользователи просят, чтобы кнопки на форме были цветными. Но такой функции для компонента TButton я не нашла... sad.gif
Решила раскрасить хотя бы надпись на кнопке.

-Задаю цвет для Font в Object Inspector - но текст как был черным, таким и остается. sad.gif

-Задаю в программе: Button1.Font.Color:=clRed; - эффект тот же... hmmm.gif

Может быть, что-то делаю не так? Мне бы самой и в голову не пришла такая идея - кнопочки раскрашивать, но ведь желание пользователя - закон... sad.gif



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
z-END
Дата 16.4.2004, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



bagira таким способом неполучится... нужно самому кнопку делать или (че намного проще) скачать какой-нить компонент ал-ля цветные кнопкиsmile.gif
посмотри например здесь


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Fedor
Дата 16.4.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



1) Ну сделай кнопочки BitButton'ами...
2) Прочитай ФАК Вита, а там написано, как сделать кнопочки с цветным шрифтом...


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
bagira
Дата 16.4.2004, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



nJIaKca.spb
Morpheus

Спасибо! Пойду искать...



--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
Albinos_x
Дата 29.5.2004, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Есть хорошие кнопки в Delphi : SpeedButton -> в эту кнопку можно загружать изображения, а также делать её прозрачной


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Georg4
Дата 29.5.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Все же спидбаттн это не обычная кнопка. ТАк что лучше или компонентой или..а ведь можно же изначальный цвет текста кнопки выбрать. Там есть какое-то свойство.

Ладно, у меня просто винда слетела, нет делфи пока что проверить не могу и сказать что-нибудь определенное


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Albinos_x
Дата 29.5.2004, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



В качестве кнопки также можно использовать Image. Свойство Canvas можно использовать для вывода на него текста различного формата (например различного цвета буквы, хаотично расположенные буквы, или буквы различных штифтов. Наконец, можно использовать несколько этих компонентов расположенных друг на друге с подгруженными в них изображениями состояния кнопки, и в зависимости от положения курсора делать видимым тот или иной Image.
Но всётаки проще использовать Спидбуттон. В него также можно подгружать различные изображения в ходе выполнения программы.

Это сообщение отредактировал(а) Albinos_x - 29.5.2004, 16:08


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Guest
Дата 31.5.2004, 16:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











СпидБатон плохой компанент, он никогда не имеет фокуса (это минус)
А вот БитБатон вполне нормальный компанент и рисуночки тебе и цвет меняется без проблем
Хотя рисовать можно и на простом Батоне у него тож есть свойство Canvas
  Вверх
Pakshin A. S.
Дата 31.5.2004, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Немного про цвет самой кнопки:
Код

unit ColorBtn;

interface

uses
Windows, Messagesm SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;

type
TColorBtn = class (TButton)
 private
  IsFocused: boolean;
  FCanvas: TCanvas;
  F3DFrame: boolean;
  FButtonColor: TColor;
  procedure Set3DFrame(Value: boolean);
  procedure SetButtonColor(Value: TColor);
  procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
  procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
  procedure DrawButtonText(xonst Caption: string; TRC: TRect; State: TButtonState; BiDiFlags: longint);
  procedure CalculateTextPosition(const Caption:string; var TDC: TRect; BiDiFlags: longint);
 protected
  procedure CreateParams(var Params: TCreateParams); override;
  procedure SetButtonStyle(ADefault: boolean); override;
 public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
 published
  property ButtonColor: TColor read FButtonColor write SetButtonColor default clBtnFace;
  property Frame3D: boolean read F3DFrame write Set3DFrame default False;
end;

procedure Register;

implementation

{TColorBtn}

constructor TColorBtn.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
FCanvas:=TCanvas.Create;
FButtonColor:=clBtnFace;
F3DFrame:=false;
end;

destructor TColorBtn.Destroy;
begin
FCanvas.Free;
Inherited Destroy;
end;

procedure TColorBtn.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
with Params do
 Style:=Style or BS_OWNERDRAW;
end;

procedure TColorBtn.Set3DFrame(Value: boolean);
begin
if F3DFrame <> Value
 then
  F3DFrame:=Value;
end;

procedure TColorBtn.SetButtonColor(Value: TColor);
begin
if FButtonColor <> Value
 then
  begin
   FButtonColor:=Value;
   Invalidate;
  end;
end;

procedure TColorBtn.WMLButtonDblClk(var Message: TWMLButtonDblClk);
begin
Perform(WM_LBUTTONDBLCLK, aMessage.Keys, Longint(Message(pos));
end;

procedure TColorBtn.SetButtonStyle(ADefault: boolean);
begin
if IsFocused <> ADefault
 then
  IsFocused:=ADefault;
end;

procedure TColorBtn.CNDrawItem(var Message: TWMFrawItem);
var
Rc:TRect;
Flags: longint;
State: TButtonState;
IsDraw, IsDefault: boolean;
DrawItemStruct: TDrawItemStruct;
begin
DrawItemStruct:=Message.DrawItemStruct^;
FCanvas.Handle:=DrawItemStruct.HDC;
RC:=ClientRect;
with DrawItemStruct do
 begin
  IsDown:=ItemState and ODS_SELECTED <> 0;
  IsDefault:=ItemState and ODS_FOCUS <> 0;
  if not Enabled
   then
    State:=dbDisabled
   else
    if isDown
     then
      State:=bsDown
     else
      State:=bsUp;
 end;
Flags:=DFCS_BUTTONPUSH or DFCS_ADJUSTRECT;
if IsDown
 then
  Flags:=Flags or DFCS_PUSHED;
if DrawItemStruct.ItemState and ODS_DISABLED <> 0
 then
  Flags:=Flags or DFCS_INACTIVE;
if IdFocused or IsDefault
 then
  begin
   FCanvas.Pen.Color:=clWindowFrame;
   FCanvas.Pen.Width:=1;
   FCanvas.Brush.Style:bsClear;
   FCanvas.Rectangle(RC.Left, RC.Top, RC.Right, RC.Bottom);
   InflateRect(RC, -1, -1);
  end;
if IsDown
 then
  begin
   FCanvas.Pen.Color:=clBtnShadow;
   FCanvas.Pen.Width:=1;
   FCanvas.Rectangle(RC.Left, RC.Top, RC.Right, RC.Bottom);
   InflateRect(RC, -1, -1);
   if F3DFrame
    then
     begin
      FCanvas.Pen.Color:=FButtonColot;
      FCanvas.Pen.Width:=1;
      DrawFrameControl(DrawItemStruct.HDC, RC, DFC_BUTTON, Flags);
     end;
  end
 else
  DrawFrameControl(DrawItemStruct.HDC, RC, DFC_BUTTON, Flags);
FCanvas.Brush.Color:=FButtonColor;
FCanvas.FillRect(RC);
InflateRect(RC, 1, 1);
if IsFocused
 then
  begin
   RC:=ClientRect;
   InflateRect(RC, -1, -1);
  end;
if IsDown
 then
  OffsetRect(RC, 1, 1);
FCanvas.Font:=self.Font;
DrawButtonText(Caption, RC, State, 0);
if IsFocused and IsDefault
 then
  begin
   RC:=ClientRect;
   InflateRect(RC, -4, -4);
   FCanvas.Pen.Color:=clWindowFrame);
   Windows.DrawFocusRect(FCanvas.Handle, RC);
  end;
FCanvas.Handle:=0;
end;

procedure TColorBtn.CalculateTextPosition(const Caption:string; var TRC:TRect; BiDiFlags: longint);
var
TB: TRact;
TS, TP: TPoint;
begin
with FCanvas do
 begin
  TB:=Rect(0, 0, TRC.Right + TRc.Left, TRC.Top + TRC.Bottom);
  DrawTect(Handle. PChar(Caption, Length(Caption), TB, DT_CALCRET or BiDiFlags);
  TS:=Point(TB.Right - TB.Left, TB.Bottom - TB.Top);
  TP.X:=((TRC.Right - TRC.Left) - TS.X + 1) div 2;
  TP.Y:=((TRC.Bottom - TRC.Top) - TS.Y + 1) div 2;
  OffsetRect(TB, TP.X + TRC.Left, TP.Y + TRC.Top);
  TRC:=TB;
 end;
end;

procedure TColorBtn.DrawBottunText(const caption:string; TRC:TRect; State:TButtonState; BiDiFlags:longint);
begin
with FCanvas do
 begin
  CalculateTextPosition(Caption, TRC, BiDiFlags);
  Brush.Style:=bsClear;
  if State = bsDisabled
   then
    begin
     OffsetRect(TRC, 1, 1);
     Font.Color:=clBtnHighlight;
     DrawText(Handle, PChar(Caption), Length(Caption), TRC, DT_CENTER or DT_VCENTER or BiDiFlags);
     OffsetRect(TRC, -1, -1);
     Font.Color:=clBtnShadow;
     DrawText(Handle, PChar(Caption), Length(Caption), TRC, DT_CENTER or DT_VCENTER or BiDiFlags);
    end
   else
    DrawText(Handle, PChar(Caption), Length(Caption), TRC, DT_CENTER or DT_VCENTER or BiDiFlags);
 end;
end;

procedure Register
begin
RegisterComponents('Additional', [TColorBtn]);
end;

end.

PM   Вверх
bagira
Дата 31.5.2004, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



Большое спасибо всем, кто ответил!


--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
NiJazz
Дата 1.6.2004, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Можно использовать картинки на форме и обрабатывать события OnClick.
PM MAIL   Вверх
Albinos_x
Дата 2.6.2004, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



NiJazz
смотри выше, я уже это предлагал biggrin.gif


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.