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

Delphi 有這種樹狀圖嗎

尚未結案
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-30 11:24:37 IP:218.170.xxx.xxx 未訂閱
各位大大好:   Delphi 有這種樹狀圖嗎? Carter
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-30 12:07:59 IP:147.8.xxx.xxx 未訂閱
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-30 13:57:45 IP:218.170.xxx.xxx 未訂閱
william 謝謝您的回應: 但是這行 TvItem :TTVItem; 一直錯誤 我是整篇 Copy 進去嗎?? 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 if checkbox is checked} 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; 謝謝!! Carter
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-30 14:21:56 IP:147.8.xxx.xxx 未訂閱
uses CommCtrl;
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-30 15:16:57 IP:218.170.xxx.xxx 未訂閱
不好意思 我學的不多 可以跟我說清楚要放在程式的哪裡嗎?? 謝謝!!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-30 15:56:09 IP:147.8.xxx.xxx 未訂閱
In your unit's uses clause, uses CommCtrl. e.g.
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Forms, CommCtrl;
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-31 09:11:45 IP:218.170.xxx.xxx 未訂閱
不好意思!! 是可以放進去但是 不能 RUN 是直接放在我的程式裡嗎?? 不好意思一直麻煩~~~
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-31 09:21:02 IP:218.170.xxx.xxx 未訂閱
可能我說的不清楚!! 這樣說好了 可以開一個新的 Form 加入 TCheckBoxTreeView 的程式碼範例公佈上嗎?? 因為我不知怎麼用!! 謝謝!!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-31 09:31:11 IP:147.8.xxx.xxx 未訂閱
unit Unit1;    interface    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, CommCtrl, ComCtrls;    type        TCheckBoxTreeView = class(TTreeView)
    protected
        procedure CreateParams(var  Params:  TCreateParams);  override;
    end;        TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
    private
        FCBTreeView: TCheckBoxTreeView;
    public
    end;    var
    Form1: TForm1;    implementation    {$R *.dfm}    procedure  TCheckBoxTreeView.CreateParams(var  Params:  TCreateParams);
begin
    inherited;
    Params.Style := Params.Style or TVS_CHECKBOXES;
end;    procedure TForm1.FormCreate(Sender: TObject);
var
    ANode: TTreeNode;
begin
    FCBTreeView := TCheckBoxTreeView.Create(self);
    with FCBTreeView do begin
        Parent := self;
        Align := alClient;
        ANode := Items.AddChild(nil,'1');
        Items.AddChild(ANode,'1.1');
        Items.AddChild(ANode,'1.2');
        ANode.Expand(False);
        ANode := Items.AddChild(nil,'2');
        Items.AddChild(ANode,'2.1');
        Items.AddChild(ANode,'2.2');
        ANode.Expand(False);
    end;
end;    procedure TForm1.FormDestroy(Sender: TObject);
begin
    FCBTreeView.Free;
end;    end.
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-31 11:01:39 IP:218.170.xxx.xxx 未訂閱
william版主,感謝您: 在請教兩個問題 1.我怎麼讀取 哪一個 Item 是 True 還是 False 2.ScrollBars 怎麼關掉呢?? 不好意思 Carter
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-12-31 11:18:21 IP:147.8.xxx.xxx 未訂閱
1. Isn't the original post includes IsNodeChecked function? 2.
procedure TCheckBoxTreeView.CreateParams(var  Params:  TCreateParams);
begin
    inherited;
    Params.Style := Params.Style or TVS_CHECKBOXES or TVS_NOSCROLL;
end;
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-12-31 13:21:26 IP:218.170.xxx.xxx 未訂閱
謝謝 william 版主~~~
JBLpower
一般會員


發表:17
回覆:6
積分:4
註冊:2003-04-09

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-03-01 16:36:25 IP:61.30.xxx.xxx 未訂閱
請問大大們 為何使用 Items.AddChild(ANode,'1.2'); SetNodeChecked(ANode,True); ANode.Expand(False); 畫面上看不到有【打勾】呢 @@?
chuxinying
一般會員


發表:5
回覆:1
積分:1
註冊:2004-07-09

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-03-07 16:13:46 IP:221.217.xxx.xxx 未訂閱
在新的units中声明了Tvheckboxtreeview以后,可以直接使用程序中界面的复选框,但是不能使用setnodechecked属性?使用就报错?why?
Egn
一般會員


發表:29
回覆:54
積分:16
註冊:2005-04-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-05-25 17:36:39 IP:210.80.xxx.xxx 未訂閱
請問有給builder用的嗎??
系統時間:2024-06-29 17:09:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!