ShellTreeview + Checkbox 如何知道是否CHECKED |
尚未結案
|
jackalan
初階會員 發表:20 回覆:88 積分:36 註冊:2003-11-08 發送簡訊給我 |
参考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 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 参考KTOP里一位大大的BCB程式,可以实现给SHELLTREEVIEW加CHECKBOX,但不知道怎么判断是否CHECKED,盼高手能尽快给予解答,谢谢!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:02procedure 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 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 非常感谢! 不知道Delphi有好用的这种控件吗? 因为这样带的Checkbox在选子目录或选父目录时要自己处理,比如选父目录自动将该父目录的子目录全部选取,我知道自己写也成,但呵呵能节省时间就想多节省点嘛。。。呵呵,知道的兄弟给个建议。單純的 TreeView Woll2Woll Software http://www.woll2woll.com/ 1stClass Explore Shell 類 Plasmatech Software http://www.plasmatech.com/shellctl.htm Shell Control Pack |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |