掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TreeViewの特定ノードのテキストカラーを変更するには? (ID:45000)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>OnClick内で書きたい場合はどうすれば良いでしょう... OnClick内で「仕込み」をしておけばいいんです。 以下、サンプルコードです。 Button1を押すと、すべてのノードのフォント色を赤に変えます。(トグル動作) Button2を押すと、フォント色が緑色のノードが移動して行きます。 そういえば、Delphiのバージョン、環境等を書いてくださいね。たまに動作が異なりますので。 type TForm1 = class(TForm) Button1: TButton; Button2: TButton; TreeView1: TTreeView; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); private { Private 宣言 } FAlternativeColor: Boolean; FSpecialIndex: Integer; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); const TestItems: array [0..3] of record Item: String; Child: array [0..2] of String; end =( (Item:'あいうえお'; Child:('あ', 'い', 'う')), (Item:'かきくけこ'; Child:('か', 'き', 'く')), (Item:'さしすせそ'; Child:('さ', 'し', 'す')), (Item:'たちつてと'; Child:('た', 'ち', 'つ')) ); var I, J: Integer; ANode: TTreeNode; begin for I:=Low(TestItems) to High(TestItems) do begin ANode:=TreeView1.Items.Add(nil, TestItems[I].Item); for J:=Low(TestItems[I].Child) to High(TestItems[I].Child) do begin TreeView1.Items.AddChild(ANode, TestItems[I].Child[J]); end; end; TreeView1.FullExpand; end; procedure TForm1.Button1Click(Sender: TObject); begin FAlternativeColor:=not FAlternativeColor; TreeView1.Invalidate; // 再描画を指示。Repaint/Update メソッドもヘルプで参照してください。 end; procedure TForm1.Button2Click(Sender: TObject); begin Inc(FSpecialIndex); if FSpecialIndex=TreeView1.Items.Count then FSpecialIndex:=0; TreeView1.Invalidate; end; procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); begin // すべてのノードのテキストカラーをclRedにする if FAlternativeColor then Sender.Canvas.Font.Color:=clRed; // 特定ノードのテキストカラーをclLimeにする if Node.AbsoluteIndex=FSpecialIndex then Sender.Canvas.Font.Color:=clLime; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.