Skip to Content

內含 Checkbox 的 TreeView 元件

最近一直在做明年要推出的光碟,而心中也有一些新的功能想加入程式中,會注意到這個功能,主要是因為全文檢索範圍的設計已不敷使用,希望有一個好的方法來處理。

在舊版的設計中,是每一冊提供一個 Checkbox,但在未來大正藏 56 冊及卍續藏 86 冊共142 冊的數量中,舊的格式實在不夠,所以想找一個能清楚呈現層次,可以用快速選擇各種分類的經目,甚至可以細到單經的選擇。單經的選擇是過去所沒有提供的,但這功能卻是許多使用者希望見到的,在思索許久之後,終於想到利用內含 Checkbox 的 TreeView 元件。

當初第一個方案是想到利用 yap 介紹的 Virtual Treeview 這個元件 (http://www.soft-gems.net/VirtualTreeview/),它的畫面蠻美觀的,也支援 Unicode,理當是最佳的選擇,不過試了一下,發覺用法不太習慣,範例也大多是 Delhpi 的,甚至許多參數在 BCB 上與 Delhpi 不同,花了不少時間卻成果有限,想想時間不夠用,實在無法花太多時間研究,只好暫時放棄,下次的正式版再來考慮這個元件。

接著在網路搜尋,找到一個方法可以把原來的 Treeview 元件變成有 Checkbox 的支援,程式很少,這樣就可以了。

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    long  dwStyle;

    dwStyle = GetWindowLong(TreeView1->Handle,GWL_STYLE); //取得原來ShelltreeView Node的Style
    dwStyle = dwStyle | 32759;          //OBM_CHECKBOXES;  //加上checkbox Style
    SetWindowLong(TreeView1->Handle,GWL_STYLE,dwStyle);  //更新Style可以了!
}

當然,檢查與控制還要另外的程式碼,但基本上這是極簡單的應用。不過有一個麻煩,它只有 checked 及 uncheck 二個狀態,我不知道怎麼做成「部份選擇」的狀態,一時也查不到資料,只好又放棄這個方法。

持續在網上搜尋,看到有人利用 Treeview 本身的 Image 功能來達成,似乎也是不錯的方法,雖然示範是 Delphi ,而且也是只有 checked and uncheck 二種狀態,不過我很快就把它改成三態,我想這部份的學習暫時可以了。

下圖是心中想像的結果,暫時模擬出來的畫面。

回應

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。
  • 可使用的 HTML 標籤:<a> <address> <b> <blockquote> <br> <caption> <center> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <i> <img> <ins> <li> <ol> <p> <pre> <span> <strike> <strong> <sub> <sup> <table> <tbody> <td> <th> <tr> <u> <ul>
    Allowed Style properties: background, background-attachment, background-color, background-image, background-position, background-repeat, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, bottom, caption-side, clip, color, direction, empty-cells, font, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, height, left, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, overflow, padding, padding-bottom, padding-left, padding-right, padding-top, right, table-layout, text-align, text-decoration, text-indent, text-transform, top, unicode-bidi, vertical-align, white-space, width, word-spacing, z-index

更多關於格式選項的資訊

CAPTCHA
驗證碼只有阿拉伯數字, 這是躲廣告用的, 麻煩你輸入了.
Image CAPTCHA
Enter the characters shown in the image.


story | about seo