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

Вниз

Как поменять Font.Color TEdit a (при Enabled = False)?   Найти похожие ветки 

 
vigo   (2005-08-19 16:05) [0]

Подскажите, можно ли поменять цвет текста TEdit если свойство Enabled = False?


 
Kazakh   (2005-08-19 16:14) [1]

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

{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.


 
Leonid Troyanovsky ©   (2005-08-19 16:20) [2]


> Kazakh   (19.08.05 16:14) [1]
> Изменить цвет неактивного TEdit


Это ж Peter Below (Teamb).
Дельферы должны знать своих героев.

--
Regards, LVT.


 
Турист   (2005-08-19 21:08) [3]

>vigo   (19.08.05 16:05)  

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Enabled := False;
 Edit1.Color := clRed
end;



 
Турист   (2005-08-19 21:09) [4]

>Турист   (19.08.05 21:08) [3]
Неверно, вопрос был про Font.Color



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

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

Наверх





Память: 0.46 MB
Время: 0.019 c
8-1114859632
Vladimir D Belousov
2005-04-30 15:13
2005.09.11
Не пойму как работает CopyMode у TCanvas


8-1114035775
Fedor
2005-04-21 02:22
2005.09.11
Как DSPack соединить с MotionDetector???


1-1124644597
WST
2005-08-21 21:16
2005.09.11
Залипание Splitrer ов при изменении размера


14-1124170032
Установщик
2005-08-16 09:27
2005.09.11
Delphi 2005


1-1124719646
Tom
2005-08-22 18:07
2005.09.11
прога закрывается без всяких предупреждений





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский