線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2281
推到 Plurk!
推到 Facebook!

ShellTreeview + Checkbox 如何知道是否CHECKED

尚未結案
jackalan
初階會員


發表:20
回覆:88
積分:36
註冊:2003-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-10 13:38:24 IP:218.2.xxx.xxx 未訂閱
参考KTOP里一位大大的BCB程式,可以实现给SHELLTREEVIEW加CHECKBOX,但不知道怎么判断是否CHECKED,盼高手能尽快给予解答,谢谢!
procedure TForm1.FormCreate(Sender: TObject);
var
  dwStyle : DWord;
begin
  dwStyle := GetWindowLong(ShellTreeView1.Handle,GWL_STYLE); //取得原來ShelltreeView Node的Style
  dwStyle := dwStyle or OBM_CHECKBOXES;  //加上checkbox Style
  SetWindowLong(ShellTreeView1.Handle,GWL_STYLE,dwStyle);  //更新Style可以了!
end;
jackalan
初階會員


發表:20
回覆:88
積分:36
註冊:2003-11-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-11 10:19:01 IP:218.2.xxx.xxx 未訂閱
各位大哥,版主大人,能帮忙看看吗?谢谢~
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-11 14:01:35 IP:211.76.xxx.xxx 未訂閱
引言: 参考KTOP里一位大大的BCB程式,可以实现给SHELLTREEVIEW加CHECKBOX,但不知道怎么判断是否CHECKED,盼高手能尽快给予解答,谢谢!
procedure TForm1.FormCreate(Sender: TObject);
var
  dwStyle : DWord;
begin
  dwStyle := GetWindowLong(ShellTreeView1.Handle,GWL_STYLE); //取得原來ShelltreeView Node的Style
  dwStyle := dwStyle or OBM_CHECKBOXES;  //加上checkbox Style
  SetWindowLong(ShellTreeView1.Handle,GWL_STYLE,dwStyle);  //更新Style可以了!
end;
type TTreeNodeCheckState = ( csNone, csUnChecked, csChecked ); procedure TForm1.Button1Click(Sender: TObject); const AStateText: array [TTreeNodeCheckState] of String = ( 'None', 'UnChecked', 'Checked' ); var ANode: TTreeNode; ATVItem: TTVItem; AState: TTreeNodeCheckState; begin ANode := TreeView1.Selected; if not Assigned( ANode ) then Exit; with ATVItem do begin mask := TVIF_HANDLE or TVIF_STATE; hItem := ANode.ItemId; stateMask := TVIS_STATEIMAGEMASK; end; TreeView_GetItem( TreeView1.Handle, ATVItem ); AState := TTreeNodeCheckState( ATVItem.State shr 12 ); Label1.Caption := Format( 'The Node Is "%s"', [ANode.Text] ); Label2.Caption := Format( 'Check State Is "%s"', [AStateText[AState]] ); end; 發表人 - osx 於 2004/04/11 14:27:02
jackalan
初階會員


發表:20
回覆:88
積分:36
註冊:2003-11-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-11 17:07:09 IP:218.2.xxx.xxx 未訂閱
OsX兄,谢谢你,还有个问题想请教您,不知道我应该如何手动设定CHECK的状态呢?因为很多时候我希望自己来设定一些NODE的状态?
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-11 21:37:14 IP:211.76.xxx.xxx 未訂閱
引言: OsX兄,谢谢你,还有个问题想请教您,不知道我应该如何手动设定CHECK的状态呢?因为很多时候我希望自己来设定一些NODE的状态?
procedure TForm1.Button2Click(Sender: TObject); var ANode: TTreeNode; ATVItem: TTVItem; begin ANode := TreeView1.Selected; if not Assigned( ANode ) then Exit; with ATVItem do begin mask := TVIF_HANDLE or TVIF_STATE; hItem := ANode.ItemId; stateMask := TVIS_STATEIMAGEMASK; state := ( Ord( csChecked ) shl 12 ); end; TreeView_SetItem( TreeView1.Handle, ATVItem ); end; 發表人 - osx 於 2004/04/11 21:38:21 發表人 - osx 於 2004/04/11 21:39:17
jackalan
初階會員


發表:20
回覆:88
積分:36
註冊:2003-11-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-12 09:30:02 IP:202.102.xxx.xxx 未訂閱
非常感谢! 不知道Delphi有好用的这种控件吗? 因为这样带的Checkbox在选子目录或选父目录时要自己处理,比如选父目录自动将该父目录的子目录全部选取,我知道自己写也成,但呵呵能节省时间就想多节省点嘛。。。呵呵,知道的兄弟给个建议。
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-12 11:12:51 IP:211.76.xxx.xxx 未訂閱
引言: 非常感谢! 不知道Delphi有好用的这种控件吗? 因为这样带的Checkbox在选子目录或选父目录时要自己处理,比如选父目录自动将该父目录的子目录全部选取,我知道自己写也成,但呵呵能节省时间就想多节省点嘛。。。呵呵,知道的兄弟给个建议。
單純的 TreeView Woll2Woll Software http://www.woll2woll.com/ 1stClass Explore Shell 類 Plasmatech Software http://www.plasmatech.com/shellctl.htm Shell Control Pack
系統時間:2024-11-23 3:26:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!