如何讓treeview的某一個節點,變顏色 |
尚未結案
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
是要這樣嗎?
寫在 TreeView1 的 OnAdvancedCustomDrawItem 事件中
判斷標準是要畫的 Note 取得 Focus
且該 Note 的 Text 屬性是 'admin 125'
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); begin if (cdsFocused in State) and (Node.Text = 'admin 125') then begin TreeView1.Canvas.Brush.Color := clWhite; TreeView1.Canvas.Font.Color := clRed; end; end;-- hagar. |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
同 hagar 兄作法。事實上細節可自行調整即可,不應要求完整程式碼。
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); begin if (Node<>nil) and (Node.StateIndex=1) then begin TreeView1.Canvas.Brush.Color := clWhite; TreeView1.Canvas.Font.Color := clRed; end; end; procedure TForm1.TreeView1DblClick(Sender: TObject); Var Node : TTreeNode; begin inherited; Node :=TreeView1.Selected; if Node<>nil then begin Node.StateIndex :=1; end; end;參考 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
找不到替代屬性,可利用 Node.Data 。
如:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); begin if (Node<>nil) and (Node.Data<>Nil) then begin TreeView1.Canvas.Brush.Color := clWhite; TreeView1.Canvas.Font.Color := clRed; end; end; procedure TForm1.TreeView1DblClick(Sender: TObject); Var Node : TTreeNode; PB : PBOOL; begin inherited; Node :=TreeView1.Selected; if Node<>nil then begin New(PB); PB^ := True; Node.Data := PB; end; end;~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var I : integer; R : TRect; begin for i := 0 to TreeView1.Items.Count-1 do With TreeView1.Items[I] do if SameText(Copy(Text,1,6),'admin_') then begin Dispose(Data); Data := Nil; if IsVisible then begin R := DisplayRect(False); InvalidateRect(TreeView1.Handle, @R, True); end; end; end;~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
seedbcc
高階會員 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |