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