• 选择框 树型控件 checkTreeview TTreeView


    unit CheckTreeview;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Controls,Commctrl,ComCtrls;
    const
       TVIS_CHECKED = $2000;
    type
      TCheckTreeview = class(TTreeView)
      private
        { Private declarations }
      protected
        { Protected declarations }
        procedure CreateParams(var Params: TCreateParams); override;
      public
        { Public declarations }
        function IsChecked(Node :TTreeNode) :Boolean;
        procedure SetChecked(Node :TTreeNode; Checked :Boolean);
      published
        { Published declarations }
      end;

    procedure Register;

    implementation

    procedure Register;
    begin
      RegisterComponents('Standard', [TCheckTreeview]);
    end;

    { TCheckTreeview }

    procedure TCheckTreeview.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style:=Params.Style or TVS_CHECKBOXES;
    end;

    function TCheckTreeview.IsChecked(Node: TTreeNode): Boolean;
    var
      TvItem :TTVItem;
    begin
      TvItem.Mask  := TVIF_STATE;
      TvItem.hItem := Node.ItemId;
      TreeView_GetItem(Node.TreeView.Handle, TvItem);
      Result := (TvItem.State and TVIS_CHECKED) = TVIS_CHECKED;
    end;

    procedure TCheckTreeview.SetChecked(Node: TTreeNode; Checked: Boolean);
    var
      TvItem :TTVItem;
    begin
      FillChar(TvItem, SizeOf(TvItem), 0);
      with TvItem do begin
        hItem     := Node.ItemId;
        Mask      := TVIF_STATE;
        StateMask := TVIS_STATEIMAGEMASK;
        if Checked then
          TvItem.State :=TVIS_CHECKED
        else
          TvItem.State :=TVIS_CHECKED shr 1;
        TreeView_SetItem(Node.TreeView.Handle, TvItem);
      end;
    end;
    end.

  • 相关阅读:
    [BZOJ1584][Usaco2009 Mar]Cleaning Up 打扫卫生
    CSS浮动
    Django by example -----1总结
    C#函数重载
    linux目录的特点
    Linux调优
    linux
    对齐方式
    19-10-25-G-悲伤
    19-10-24-H
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631482.html
Copyright © 2020-2023  润新知