|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"[D3]TTreeView ItemTextColor 文字色変更"
{
IE3.X以降の新Comctl32.dllで色々な新しい機構が導入されていますが
Delphi 3のTTreeViewはあまり変わっていません。
新しく装備されたCUSTOMDRAWを使用してテキストの色を変えるサンプルです。
デザイン時色が変わりませんが実行させると変更が反映します。
一応コンポになっていますのでカット&ペーストでユニットを作成して下さい。
みぐ (VER04604)さんのComCtl32.pasを参考にしています。
}
unit SamplTreeView;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Commctrl;
const
// 全部要りませんがとりあえず (^^;
NM_CUSTOMDRAW = (NM_FIRST-12);
CDRF_DODEFAULT = $00000000;
CDRF_NEWFONT = $00000002;
CDRF_SKIPDEFAULT = $00000004;
CDRF_NOTIFYPOSTPAINT = $00000010;
CDRF_NOTIFYITEMDRAW = $00000020;
CDRF_NOTIFYPOSTERASE = $00000040;
CDRF_NOTIFYITEMERASE = $00000080;
CDDS_PREPAINT = $00000001;
CDDS_POSTPAINT = $00000002;
CDDS_PREERASE = $00000003;
CDDS_POSTERASE = $00000004;
CDDS_ITEM = $00010000;
CDDS_ITEMPREPAINT = (CDDS_ITEM or CDDS_PREPAINT);
CDDS_ITEMPOSTPAINT = (CDDS_ITEM or CDDS_POSTPAINT);
CDDS_ITEMPREERASE = (CDDS_ITEM or CDDS_PREERASE);
CDDS_ITEMPOSTERASE = (CDDS_ITEM or CDDS_POSTERASE);
type
PNMCustomDrawInfo = ^TNMCustomDrawInfo;
TNMCustomDrawInfo = packed record
hdr: TNMHDR;
dwDrawStage: DWORD;
hdc: HDC;
rc: TRect;
dwItemSpec: DWORD;
lItemlParam: LPARAM;
end;
TNMCustomDraw = TNMCustomDrawInfo;
TSamplTreeView = class(TTreeView)
private
FTextColor: TColor;
procedure SetColor(Value: TColor);
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
public
constructor Create(AOwner: TComponent);
published
property TextColor: TColor read FTextColor write SetColor
default clWindowText;
end;
procedure Register;
implementation
constructor TSamplTreeView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTextColor:= clWindowText;
end;
procedure TSamplTreeView.SetColor(Value: TColor);
begin
if Value <> FTextColor then
FTextColor:= Value;
end;
procedure TSamplTreeView.CNNotify(var Message: TWMNotify);
begin
with Message.NMHdr^ do
case code of
NM_CUSTOMDRAW:
with PNMCustomDrawInfo(Pointer(Message.NMHdr))^ do
case dwDrawStage of
CDDS_PREPAINT:
Message.Result:= CDRF_NOTIFYITEMDRAW;
CDDS_ITEMPREPAINT:
SetTextColor(hdc, ColorToRGB(FTextColor));
end;
end;
inherited;
end;
procedure Register;
begin
RegisterComponents('Samples', [TSamplTreeView]);
end;
end.
でわ〜でわ〜
by ヒシアマゾン
BXC05221@niftyserve.or.jp
ken_fu@mx4.meshnet.or.jp
Original document by ヒシアマゾン 氏 ID:(BXC05221)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|