喫茶XRAYトップページ

[スレッド全体
]

[12925] TTreeView の展開ボタンのアイコン返信 削除
2019/6/20 (木) 16:56:39 Mr.XRAY
TTreeView のノードのアイコンを [+], [-] にする例です.
VCL Style で変更する手も考えられます.

EXE 作成は Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32
vclide150.bpl 内の以下の画像を使用しています.
VT_XPBUTTONMINUS.bmp
VT_XPBUTTONPLUS.bmp

http://mrxray.on.coocan.jp/Delphi/zip/DelphiML_5203_TTreeView_NodePlusMinus.zip
(EXE のみです.画像は利用者が用意してください)

参考記事
[ カスタム描画における TCanvas ( 入門者用 ) ]
http://mrxray.on.coocan.jp/Delphi/Others/A_UltraIntro02.htm

※ コードは最初の掲載時から少し変更しています.

procedure TForm1.FormCreate(Se
procedure TForm1.FormCreate(Sender: TObject);
var
 LRoot  : TTreeNode;
 LNode  : TTreeNode;
 LLoopI : integer;
 LLoopJ : integer;
 LLoopK : integer;
begin
  for LLoopJ:=0 to 4 do begin
    LRoot:=TreeView1.Items.Add(nil,IntToStr(LLoopJ));
    for LLoopI:= 0 to 2 do begin
      LNode := TreeView1.Items.AddChild(LRoot, Format('Child %d.%d',[LLoopJ,LLoopI]));
      if LLoopI = 1 then begin
        for LLoopK := 1 to 3 do begin
          TreeView1.Items.AddChild(LNode, Format('Child-Child %d',[LLoopK]));
        end;
      end;
    end;
  end;
end;

procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
  var PaintImages, DefaultDraw: Boolean);
var
  LLeft   : Integer;
  LTop    : Integer;
  LBitmap : TBitmap;
begin
  DefaultDraw := True;
  if Stage <> cdPostPaint then Exit;
  if not Node.IsVisible then Exit;

  LLeft := Node.DisplayRect(True).Left + Treeview1.Indent - 33;
  LTop  := Node.DisplayRect(False).Top + 6;

  LBitmap := TBitmap.Create;
  try
    if Node.HasChildren then begin
      if Node.Expanded then begin
        try
          LBitmap.LoadFromFile('VT_XPBUTTONMINUS.bmp');
          TreeView1.Canvas.Draw(LLeft, LTop, LBitmap);
        except
        end;
      end else begin
        try
          LBitmap.LoadFromFile('VT_XPBUTTONPLUS.bmp');
          TreeView1.Canvas.Draw(LLeft, LTop, LBitmap);
        except
        end;
      end;
    end;
  finally
    FreeAndNil(LBitmap);
  end;
end;



[12949] TTreeView の展開/折りたたみボタン返信 削除
2019/7/5 (金) 22:16:35 Mr.XRAY
Delphi ML の国宝級のような方が,もし読んで,参考リンクをクリックしてその記事を
読んだら理解できるように記事の文章,リンク等を追加修正しています.

ただし,国宝級の方は,ヘルプは読まない,検索はしない,リンクを提示しても
読まない,レスをしてもレスの通りの操作やテストはしない.
という方ですので,以下の記事に意味や価値があるかどうかは疑問です.
記事そのものをまともに読まない可能性大ですが.

ともかく Delphi 2010 で新規のプロジェクトを作成しての確認が重要ですけど.


[800] [ 06_TTreeView の展開折りたたみボタンを [+] [-] の画像にする ]
http://mrxray.on.coocan.jp/Delphi/plSamples/800_FolderTree.htm#06

[800] [ 07_TTreeView の展開折りたたみボタンを矢印 ( 三角形 ) にする ]
http://mrxray.on.coocan.jp/Delphi/plSamples/800_FolderTree.htm#07

[800] [ 08_VCL Style 使用時の TTreeView の展開折りたたみボタン ]
http://mrxray.on.coocan.jp/Delphi/plSamples/800_FolderTree.htm#08

ちなみに,以下のどのキーワードでも上のページはヒットします (Google)
Delphi Treeview
Delphi Treeview 展開 折りたたみ
Delphi TTreeview 展開 折りたたみ
Delphi TTreeview 展開 折りたたみ ボタン

「delphi 2010 Treeview」で検索すると以下のページがヒットしますね.

http://afsoft.jp/program/del2010/p11_064.html

いずれにしても検索しない人には関係ないけど.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82