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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> bitbtn, Цвет и прочее 
:(
    Опции темы
Алкоголик
Дата 4.4.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здраствуйте.
Испольую BitBtn и мне нужно что бы при наведении курсора у кнопки менялся цвет... Не нашел что-то свойства color... Собственно вопрос я думаю ясен, где спрятано это свойство?
И еще следующее интересует: в той же Delphi 2007(2009) на панели инструментов.. между кнопочками нету разграничительных линей.. не подскажете как такое можно сотворить?
Заранее спасибо..
PM MAIL   Вверх
mopsa
Дата 4.4.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 11.1.2009
Где: Екатеринбург/Асбе ст

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



нет у него такого свойства
вот компонент который это позволяет, взято с DRKB
Код

unit colorbtn;
 
interface
 
uses
 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
 
type
 
TColorBtn = class(TButton)
private
   FCanvas: TCanvas;
   IsFocused: Boolean;
   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(const Caption: string; TRC: TRect; State:
     TButtonState; BiDiFlags: Longint);
   procedure CalcuateTextPosition(const Caption: string; var TRC: 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);
Height := 21;
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_LBUTTONDOWN, Message.Keys, Longint(Message.Pos));
end;
 
procedure TColorBtn.SetButtonStyle(ADefault: Boolean);
begin
if IsFocused <> ADefault then
   IsFocused := ADefault;
end;
 
procedure TColorBtn.CNDrawItem(var Message: TWMDrawItem);
var
RC: TRect;
Flags: Longint;
State: TButtonState;
IsDown, 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 := bsDisabled
   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 IsFocused 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 := FButtonColor;
     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;
FCanvas.Font := Self.Font;
if IsDown then
   OffsetRect(RC, 1, 1);
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.CalcuateTextPosition(const Caption: string; var TRC: TRect;
BiDiFlags: Integer);
var
TB: TRect;
TS, TP: TPoint;
begin
with FCanvas do
begin
   TB := Rect(0, 0, TRC.Right + TRC.Left, TRC.Top + TRC.Bottom);
   DrawText(Handle, PChar(Caption), Length(Caption), TB, DT_CALCRECT 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.DrawButtonText(const Caption: string; TRC: TRect; State:
TButtonState; BiDiFlags: Integer);
begin
with FCanvas do
begin
   CalcuateTextPosition(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('Controls', [TColorBtn]);
end;
 
end.




PM MAIL   Вверх
Hellen
Дата 11.4.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 1
Всего: 3



Цитата

между кнопочками нету разграничительных линей
Эти линии называются сплитеры, в своих программах можешь втыкать их.
А в Delphi, я б на твоём месте забила.
Или  без них промахиваешся?
PM MAIL   Вверх
Алкоголик
Дата 18.4.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Hellen @  11.4.2009,  17:02 Найти цитируемый пост)
Эти линии называются сплитеры, в своих программах можешь втыкать их.


Нет что такое сплитеры я прекрасно знаю smile
Под линиями я подразумевал окантовочку вокруг кнопки.
Мне нужно было сделать так что бы кнопка не была явно выражена.

Добавлено через 7 минут и 11 секунд
user posted image
Например вот.. у конопок нет ярко выраженных границ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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