內含 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 二種狀態,不過我很快就把它改成三態,我想這部份的學習暫時可以了。 下圖是心中想像的結果,暫時模擬出來的畫面。
重要度:
文章分類:
電腦標籤:

發表新回應