|
{ *********************************************************************** } { } { Description: Delphi / Control Class } { Treeview with checkbox } { Authour: 蓝马 } { QQ: 13575437[蓝马] } { Modified: Dingrj } { Create Date: 2006-03-06 } { QQ: 6457428 } { Version: V 1.1 } { Copyright (c) 2005-2006 Macro Softwrare Corporation } { } { *********************************************************************** } unit UnitCheckTreeview;
interface
uses Windows,Messages,SysUtils,Classes,Controls,Commctrl,ComCtrls;
const TVIS_CHECKED=$2000; type TCheckTreeview=class(TTreeView) private {Privatedeclarations} protected {Protecteddeclarations} procedure CreateParams(var Params: TCreateParams); override; public {Publicdeclarations} function IsChecked(Node: TTreeNode): Boolean; procedure SetChecked(Node: TTreeNode; Checked: Boolean);
procedure SetAllChecked(Checked: Boolean); //added by Dingrj 2006-03-08 //procedure SetAllUnChecked(Node: TTreeNode; Checked: Boolean); published {Publisheddeclarations} 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.SetAllChecked( Checked: Boolean); var i:Integer; begin for i:=0 to Self.Items.Count -1 do SetChecked(Self.Items[i],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.
|