Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Изменить цвет неактивного TEdit

Delphi , Компоненты и Классы , TEdit

Изменить цвет неактивного TEdit

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{Question: 
How can I change the color of a disabled (Edit1.Enabled := false;) control? 
I do not want the normal grey color. 

Answer: 
Two options: 

1) place the control on a panel and disable the panel instead of the control. 
This way the color stays to whatever you set it. 

2) make a descendent and take over the painting when it is disabled. 

Here is an example:}


 unit PBExEdit;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls,
   Forms, Dialogs, StdCtrls;

 type
   TPBExEdit = class(TEdit)
   private
     { Private declarations }
     FDisabledColor: TColor;
     FDisabledTextColor: TColor;
     procedure WMPaint(var msg: TWMPaint); message WM_PAINT;
     procedure WMEraseBkGnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND;
     procedure SetDisabledColor(const Value: TColor); virtual;
     procedure SetDisabledTextColor(const Value: TColor); virtual;
   protected
     { Protected declarations }
   public
     { Public declarations }
     constructor Create(aOwner: TComponent); override;
   published
     { Published declarations }
     property DisabledTextColor: TColor read FDisabledTextColor
       write SetDisabledTextColor default clGrayText;
     property DisabledColor: TColor read FDisabledColor
       write SetDisabledColor default clWindow;
   end;

 procedure Register;

  implementation

 procedure Register;
 begin
   RegisterComponents('PBGoodies', [TPBExEdit]);
 end;


 constructor TPBExEdit.Create(aOwner: TComponent);
 begin
   inherited;
   FDisabledColor := clWindow;
   FDisabledTextColor := clGrayText;
 end;


 procedure TPBExEdit.SetDisabledColor(const Value: TColor);
 begin
   if FDisabledColor <> Value then
   begin
     FDisabledColor := Value;
     if not Enabled then
       Invalidate;
   end;
 end;


 procedure TPBExEdit.SetDisabledTextColor(const Value: TColor);
 begin
   if FDisabledTextColor <> Value then
   begin
     FDisabledTextColor := Value;
     if not Enabled then
       Invalidate;
   end;
 end;


 procedure TPBExEdit.WMEraseBkGnd(var msg: TWMEraseBkGnd);
 var
   Canvas: TCanvas;
 begin
   if Enabled then
     inherited
   else
   begin
     Canvas:= TCanvas.Create;
     try
       Canvas.Handle := msg.DC;
       SaveDC(msg.DC);
       try
         canvas.Brush.Color := FDisabledColor;
         canvas.Brush.Style := bsSolid;
         canvas.Fillrect(clientrect);
         msg.Result := 1;
       finally
         RestoreDC(msg.DC, - 1);
       end;
     finally
       canvas.free
     end;
   end;
 end;


 procedure TPBExEdit.WMPaint(var msg: TWMPaint);
 var
   Canvas: TCanvas;
   ps: TPaintStruct;
   CallEndPaint: Boolean;
 begin
   if Enabled then
     inherited
   else
   begin
     CallEndPaint := False;
     Canvas:= TCanvas.Create;
     try
       if msg.DC <> 0 then
       begin
         Canvas.Handle := msg.DC;
         ps.fErase := true;
       end
       else
       begin
         BeginPaint(Handle, ps);
         CallEndPaint:= True;
         Canvas.handle := ps.hdc;
       end;
       if ps.fErase then
         Perform(WM_ERASEBKGND, Canvas.Handle, 0);
       SaveDC(canvas.handle);
       try
         Canvas.Brush.Style := bsClear;
         Canvas.Font := Font;
         Canvas.Font.Color := FDisabledTextColor;
         Canvas.TextOut(1, 1, Text);
       finally
         RestoreDC(Canvas.Handle, - 1);
       end;
     finally
       if CallEndPaint then
         EndPaint(handle, ps);
       Canvas.Free
     end;
   end;
 end;

 end.

Статья Изменить цвет неактивного TEdit раздела Компоненты и Классы TEdit может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TEdit ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
29.03.2024 01:35:23/0.033052921295166/0