お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"Disabled 時の文字色指定可 Memo コンポ"





■概要
 Enabled = False 時の文字色を指定できる Memo コンポです。
 Panel 上に Memo を配置し、Panel の Enabled 切換と同時に Memo の Font
Color を変える方が、目的を達成するには安全(このコンポでは、 WM_ENABLE
を握り潰していますので。。。^^;)かとは思いますがご参考まで。(((^^;)

■注意事項
 ・Windows98SE + Delphi5 Pro で動作確認。
 ・本サンプルは、ご自身の責任においてお試し下さい。m(_"_)m

■サンプルコード
//=========================================================================
unit OutlawMemo;

interface

uses
  Windows, Messages, Classes, Graphics, Controls, StdCtrls;

type
  TOutlawMemo = class(TMemo)
  private
    { Private 宣言 }
    FEnabledTextColor,
    FDisabledTextColor: TColor;
    procedure SetTextColor( const fEnabled: Boolean );
    procedure WMEnable( var Message: TWMEnable ); message WM_ENABLE;
    procedure SetDisabledTextColor( const Value: TColor );
    procedure SetEnabledTextColor( const Value: TColor );
  protected
    { Protected 宣言 }
    procedure CreateParams( var Params: TCreateParams ); override;
    procedure CreateWnd; override;
    procedure SetEnabled( Value: Boolean ); override;
    procedure Loaded; override;
  public
    { Public 宣言 }
    constructor Create( AOwner: TComponent ); override;
  published
    { Published 宣言 }
    property DisabledTextColor: TColor read FDisabledTextColor
                                      write SetDisabledTextColor;
    property EnabledTextColor : TColor read FEnabledTextColor
                                      write SetEnabledTextColor;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TOutlawMemo]);
end;

{ TOutlawMemo }

constructor TOutlawMemo.Create(AOwner: TComponent);
begin
  inherited Create( AOwner );
  FEnabledTextColor  := Font.Color;
  FDisabledTextColor := Font.Color;
end;

procedure TOutlawMemo.CreateParams( var Params: TCreateParams );
begin
  inherited CreateParams( Params );
  with Params do Style := Style and ( not WS_DISABLED );
end;

procedure TOutlawMemo.CreateWnd;
begin
  inherited CreateWnd;
  if not Enabled then Perform( CM_EnabledChanged, 0, 0 );
end;

procedure TOutlawMemo.Loaded;
begin
  inherited Loaded;
  SetTextColor( Enabled );
end;

procedure TOutlawMemo.SetTextColor( const fEnabled: Boolean );
begin
  case fEnabled of
    False: Font.Color := FDisabledTextColor;
    else   Font.Color := FEnabledTextColor;
  end;{case fEnabled of}
end;

procedure TOutlawMemo.SetDisabledTextColor( const Value: TColor );
begin
  if Value = FDisabledTextColor then Exit;
  FDisabledTextColor := Value;
  SetTextColor( Enabled );
end;

procedure TOutlawMemo.SetEnabled( Value: Boolean );
begin
  inherited SetEnabled( Value );
  SetTextColor( Value );
end;

procedure TOutlawMemo.SetEnabledTextColor( const Value: TColor );
begin
  if Value = FEnabledTextColor then Exit;
  FEnabledTextColor := Value;
  SetTextColor( Enabled );
end;

procedure TOutlawMemo.WMEnable( var Message: TWMEnable );
begin
  {* EnableWindow 対策 *}
  if Message.Enabled <> Enabled then
    begin
      SetEnabled( Message.Enabled );
    end;{if Message.Enabled <> Enabled then}
  {* Enabled = False のときはメッセージを握りつぶす (((^^;) *}
  if Enabled then inherited;
end;

end.
//=========================================================================

                              01/04/03(Tue) 10:00am  Fermion [KHF03264]

 


- FDELPHI  MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/04/08 -

- FDELPHI  MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/04/09 -

Original document by Fermion         氏 ID:(KHF03264)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum