全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2183
推到 Plurk!
推到 Facebook!

有關TTreeView 和TPopupMenu的問題

答題得分者是:jessechan
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-02 22:32:22 IP:61.59.xxx.xxx 未訂閱
各位高手大家好,    最近因為工作的關係剛接觸到BCB,深深被BCB所吸引... 但是在coding上遇到了些問題,又找不到人可以問,只來勞煩各位幫忙了.    ■TreeView裏有沒辦法做到Drag & Drop,例如把某個Subitem搬到另一個SubItem   下.或者是有沒有像ICQ or MSN Messanger的Conact List那樣的Tree呢(只有   一層,且沒有左手邊的加號和虛線)?    ■不知道PopupMenu有沒辦法做到,像按下Windows"開始"跑出來的Menu那樣,就   是左手邊有一條橫向的Bar.    ■ToolBar中的ToolButton,怎麼都沒辦法放入大的icon呢?都只能放入小的icon   ,有沒有辦法放入像Outlook Express裏,那樣大的icon呢?    呼...一口氣問了這麼多問題,因為剛接觸BCB有對很多地方都不是很懂,希望大家能夠幫忙一下囉!! 先謝謝啦.
------
=== Study, Study and Study ===
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-03 08:56:56 IP:61.219.xxx.xxx 未訂閱
TreeView裏有沒辦法做到Drag & Drop 1. 將Treeview之dragmode設為dmAutomatic 2. 於onDragover
  if (Source = TreeView1)
    Accept=True;
3. 於onDragDrop處理你要做的, 下例分別取得Drag drop之source 及目的node
{
TTreeNode *src,*dst;
  src = TreeView1->Selected;
  dst = TreeView1->GetNodeAt(X,Y);
}
沒有左手邊的加號和虛線 將TreeView之ShowLines及ShowButtons設為False 不知道PopupMenu有沒辦法做到,像按下Windows"開始"跑出來的Menu那樣,就是左手邊有一條橫向的Bar. 大概必須將OwnerDraw設為False後自行去繪 ToolBar中的ToolButton,怎麼都沒辦法放入大的icon呢?都只能放入小的icon,有沒有辦法放入像Outlook Express裏,那樣大的icon呢? 拉大不就變大了嗎?
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-03 13:09:52 IP:203.70.xxx.xxx 未訂閱
引言: TreeView裏有沒辦法做到Drag & Drop 1. 將Treeview之dragmode設為dmAutomatic 2. 於onDragover
  if (Source = TreeView1)
    Accept=True;
3. 於onDragDrop處理你要做的, 下例分別取得Drag drop之source 及目的node
{
TTreeNode *src,*dst;
  src = TreeView1->Selected;
  dst = TreeView1->GetNodeAt(X,Y);
}
沒有左手邊的加號和虛線 將TreeView之ShowLines及ShowButtons設為False
謝謝板主的回答,解決了大部份的問題. 但是還有其他的問題,>< face="Verdana, Arial, Helvetica">引言: 不知道PopupMenu有沒辦法做到,像按下Windows"開始"跑出來的Menu那樣,就是左手邊有一條橫向的Bar. 大概必須將OwnerDraw設為False後自行去繪 還是不太懂??要怎麼自己畫呢? 有沒有這樣的範例程式呢?
引言: ToolBar中的ToolButton,怎麼都沒辦法放入大的icon呢?都只能放入小的icon,有沒有辦法放入像Outlook Express裏,那樣大的icon呢? 拉大不就變大了嗎?
拉大只會把ToolButton的部份變大,icon還是一樣很小. 因為ToolBar的Image是來自ImageList,而ImageList我只能加入16X16的小icon. 所以有沒有辦法讓ImageList加入較大一點的圖呢? BCB新手
------
=== Study, Study and Study ===
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-03 14:06:55 IP:203.75.xxx.xxx 未訂閱
拉大只會把ToolButton的部份變大,icon還是一樣很小. 因為ToolBar的Image是來自ImageList,而ImageList我只能加入16X16的小icon. 所以有沒有辦法讓ImageList加入較大一點的圖呢? 請設定 ImageList 的 Height 及 Width property 即可 Jesse Chan
------
Jesse Chan
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-03 14:14:37 IP:61.219.xxx.xxx 未訂閱
要設定大的 ICON 可用 aimgList := TImageList.createsize(32,32) 如此就可用 32x32 的 icon 圖形了 Thomas Chiou
------
Thomas Chiou
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-03 14:20:40 IP:203.75.xxx.xxx 未訂閱
引述 但是還有其他的問題,TreeItem的Image可以做成動態的嗎? 答案是肯定的, 您可以在 Form 上加一個 timer 來測試, 在 Timer 的 Timer event 中加上, TreeView1->Items->Item[X]->ImageIndex = Y; 可任意改變 Y 值, item 的圖示可跟著變化, 但有一個小限制, 就是所改變的 item 不可是正被選取的 item, 不然要等到其它 item 被選取時, 新的值才能生效, 不過您可以試試強迫 redraw, 不知道有沒有用. Jesse Chan
------
Jesse Chan
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-04 10:24:40 IP:203.70.xxx.xxx 未訂閱
引言: 引述 但是還有其他的問題,TreeItem的Image可以做成動態的嗎? 答案是肯定的, 您可以在 Form 上加一個 timer 來測試, 在 Timer 的 Timer event 中加上, TreeView1->Items->Item[X]->ImageIndex = Y; 可任意改變 Y 值, item 的圖示可跟著變化, 但有一個小限制, 就是所改變的 item 不可是正被選取的 item, 不然要等到其它 item 被選取時, 新的值才能生效, 不過您可以試試強迫 redraw, 不知道有沒有用. Jesse Chan
謝謝各位的幫忙! >>
------
=== Study, Study and Study ===
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-04 11:16:32 IP:203.75.xxx.xxx 未訂閱
有一個 trick 可以用, 就是在程式中偷偷把 selected 移到別的地方再移回來, 但是要記得插一隻旗子來辨識是程式在移動而不是 user 點選, 如此就可以做到好像 selected 也可以變更圖示. Jesse Chan
------
Jesse Chan
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-04 11:54:14 IP:203.70.xxx.xxx 未訂閱
引言: 有一個 trick 可以用, 就是在程式中偷偷把 selected 移到別的地方再移回來, 但是要記得插一隻旗子來辨識是程式在移動而不是 user 點選, 如此就可以做到好像 selected 也可以變更圖示. Jesse Chan
不好意思,不太懂"插一隻旗子"的意思?? 還有如果偷偷移到別的地方的話,代表選取該Item的藍色方塊不是也會移到別的地方嗎? BCB新手
------
=== Study, Study and Study ===
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-04 13:14:46 IP:203.75.xxx.xxx 未訂閱
抱歉, 我上一篇說錯了, 其實關鍵是在 TreeView1->Items->Item[0]->SelectedIndex = X; 因為被選取的圖示是用 SelectedIndex 而不是 ImageIndex 所控制, 故用一行 if (TreeView1->Items->Item[0]->Selected == true) 來判斷是否被選取, 再決定兩個都改還是只改一個. 如此就不用移來移去, 此外所謂插旗子的意思通常是加上一個變數來記錄目前的狀態, 如上述如果在程式中自動選取的話就把那個變數設成 true, 如果是 user 手動選取的話就設定 false, 如果可作相對的應變. Jesse Chan
------
Jesse Chan
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-04 14:17:27 IP:203.70.xxx.xxx 未訂閱
引言: 抱歉, 我上一篇說錯了, 其實關鍵是在 TreeView1->Items->Item[0]->SelectedIndex = X; 因為被選取的圖示是用 SelectedIndex 而不是 ImageIndex 所控制, 故用一行 if (TreeView1->Items->Item[0]->Selected == true) 來判斷是否被選取, 再決定兩個都改還是只改一個. 如此就不用移來移去, 此外所謂插旗子的意思通常是加上一個變數來記錄目前的狀態, 如上述如果在程式中自動選取的話就把那個變數設成 true, 如果是 user 手動選取的話就設定 false, 如果可作相對的應變. Jesse Chan
謝謝Jesse詳細的解說,我已經明白了. 是不是在Item被selected時,SelectedIndex and ImageIndex這兩個property都要改變,否則就會出現兩個icon重疊的現像. BCB新手
------
=== Study, Study and Study ===
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-04 14:37:37 IP:203.75.xxx.xxx 未訂閱
我想是不會的, 因為 item 在被 select 時的圖示是由 SelectedIndex 所控制,而不是 ImageIndex. Jesse Chan
------
Jesse Chan
blowfish
一般會員


發表:8
回覆:35
積分:18
註冊:2002-12-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-04 15:32:37 IP:203.70.xxx.xxx 未訂閱
引言: 我想是不會的, 因為 item 在被 select 時的圖示是由 SelectedIndex 所控制,而不是 ImageIndex. Jesse Chan
謝謝Jesse的回答. 學到很多... BCB新手
------
=== Study, Study and Study ===
系統時間:2024-04-19 0:43:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!