Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Вниз

Как изменить цвет объекта Button?   Найти похожие ветки 

 
Reaktor   (2006-08-05 18:16) [0]

Никак не получается изменить цвет кнопки. Все время серая.это возможно?


 
KilkennyCat ©   (2006-08-05 19:54) [1]

Что возможно? Что все время серая? Да.


 
Ketmar ©   (2006-08-05 19:55) [2]

да.


 
easy ©   (2006-08-05 20:00) [3]

http://dfc.com.ru/?sid=2&id=14&itemid=52


 
GeLLeR ©   (2006-08-06 00:33) [4]


> easy ©   (05.08.06 20:00) [3]
> http://dfc.com.ru/?sid=2&id=14&itemid=52

А ссылка-то битая...


 
GeLLeR ©   (2006-08-06 00:34) [5]

И вообще зачем есть F1 ???
Это огромная документация где, я думаю, можно найти ответы на все вопросы...


 
Германн ©   (2006-08-06 00:40) [6]


> GeLLeR ©   (06.08.06 00:33) [4]
>
>
> > easy ©   (05.08.06 20:00) [3]
> > http://dfc.com.ru/?sid=2&id=14&itemid=52
>
> А ссылка-то битая...

Врёшь. Нормальная ссылка. И материал по ссылке взят с Мастаков.


 
GeLLeR ©   (2006-08-06 00:43) [7]


>
> Германн ©   (06.08.06 00:40) [6]

ОЙ
сорри вери биг! я ступил соединение разрывалось


 
Footballer ©   (2006-08-06 00:44) [8]

Скачай копонент...
TFansyButton рулит


 
GeLLeR ©   (2006-08-06 00:48) [9]

Тока у него проблема с отрисовкой...
ЭЭЭ
На слабых компах сильно мерцает(проверено мной-)


 
Ketmar ©   (2006-08-06 11:49) [10]

тьфу. "своя" кнопка пишется за пол-часа (это если очень не спешить). помнится, был мой первый компонент. %-)


 
Gydvin ©   (2006-08-06 12:00) [11]

Спер
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.


 
GeLLeR ©   (2006-08-06 14:53) [12]

%-)
Что значит этот смайл?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.042 c
15-1154417219
E'n'N
2006-08-01 11:26
2006.08.27
Зачем вам нужен КПК? Как вы его используете?


1-1152773900
Ярослав
2006-07-13 10:58
2006.08.27
Распаковка&amp;упаковка псевдо-архива


2-1154944809
UMU
2006-08-07 14:00
2006.08.27
DBGrid и DBCheckBox


2-1154962598
Omikron
2006-08-07 18:56
2006.08.27
Help


15-1154455799
grisme
2006-08-01 22:09
2006.08.27
Прилеплялка WinAMP :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский