📄 checktreeview.~pas
字号:
unit CheckTreeView;
interface
uses
SysUtils, Classes, Controls, ComCtrls;
const
TVIS_CHECKED = $2000;//什么意思
type
CheckTreeView = class(TTreeView)
private
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
public
function IsChecked(Node :TTreeNode) :Boolean;
procedure SetChecked(Node :TTreeNode; Checked :Boolean);
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [CheckTreeView]);
end;
{ CheckTreeView }
procedure CheckTreeView.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or TVS_CHECKBOXES;
end;
function CheckTreeView.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 CheckTreeView.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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -