用2个PICTURE
CHECK、UNCHECK
选择的时候用CHECK PICTURE
其他的用UNCHECK PICTURE就可以了
CHECK、UNCHECK
选择的时候用CHECK PICTURE
其他的用UNCHECK PICTURE就可以了
解决方案 »
- 请教,是否可以访问一个http地址,然后读取该http的内容?
- 使用cxGrid时删除adodataset最后一条记录时出错"bof 或eof中有一个是真,或者当前的记录已被删除..."
- 散分:刚买的电脑就出问题,问了n个人,都不知道什么原因!
- 在线等 QR中如何使统计字段显示在每页的页脚 ?谢谢
- 谁有 经典算法及讲解 1.0 ,或是数据结构 pascal 的 可以给我一份吗??谢了。
- 键盘在delphi的值
- 难道还有千年虫?delphi5+sql server7.0
- 让statictext中的内容换行怎么设置?
- 请指点: ActiveForm 不能下载到IE?
- Delphi自带这种控件吗?(哪里可以找到)
- 在DBgrid中单击时能否判断这个字段为数据库中的关键字段?
- 请帮忙把这几句简单的英语译成汉语。看不太懂。
我曾试过!!
=========================[I_am_zealot]=====
重载TreeView的CreateParams:
type
TCheckBoxTreeView = class(TTreeView)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;procedure TCheckBoxTreeView.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or TVS_CHECKBOXES;
{ TVS_CHECKBOXES declared in CommCtrl }
end;如果要Check这个CheckBox,可以用下面的代码:
function IsNodeChecked(Node :TTreeNode) :Boolean;
const
TVIS_CHECKED = $2000;
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 SetNodeChecked(Node :TTreeNode; Checked :Boolean);
const
TVIS_CHECKED = $2000;
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;
可以做成事件和封装成一个类:
private OldState :Boolean;procedure Change(Node: TTreeNode); override;
begin
inherited Change(Node);
OldState := IsNodeChecked(Node);
end;procedure Click; override;
var
NewState :Boolean;
begin
inherited Click;
NewState := IsNodeChecked(Self.Selected);
if NewState = OldState then Exit;
if (NewState) and Assigned(OnNodeChecked) then OnNodeChecked()
else if (not NewState) and Assigned(OnNodeUnChecked) then
OnNodeUnChecked()// OnNodeChecked & OnNodeUnchecked will be events that you declare
end;