![]() |
![]() |
procedure ToggleTreeViewCheckBoxes( Node :TTreeNode; cUnChecked, //CheckBox未选中状态 cChecked, //CheckBox选中状态 cRadioUnchecked, //RadioButtion未选中状态 cRadioChecked :integer); // RadioButtion选中状态 var tmp:TTreeNode; begin if Assigned(Node) then begin //如果当前是未选中状态则变为选中状态 if Node.StateIndex = cUnChecked then Node.StateIndex := cChecked //如果当前是选中状态则变为未选中状态 else if Node.StateIndex = cChecked then Node.StateIndex := cUnChecked else if Node.StateIndex = cRadioUnChecked then begin tmp := Node.Parent; if not Assigned(tmp) then tmp := TTreeView(Node.TreeView).Items.getFirstNode else tmp := tmp.getFirstChild; while Assigned(tmp) do begin if (tmp.StateIndex in [cRadioUnChecked,cRadioChecked]) then tmp.StateIndex := cRadioUnChecked; tmp := tmp.getNextSibling; end; Node.StateIndex := cRadioChecked; end; // if StateIndex = cRadioUnChecked end; // if Assigned(Node) end; |
procedure TForm1.TreeView1Click(Sender: TObject); var P:TPoint; begin GetCursorPos(P); //得到光标的位置 P := TreeView1.ScreenToClient(P); if (htOnStateIcon in TreeView1.GetHitTestInfoAt(P.X,P.Y)) then ToggleTreeViewCheckBoxes( TreeView1.Selected, cFlatUnCheck, cFlatChecked, cFlatRadioUnCheck, cFlatRadioChecked); end; |
procedure TForm1.TreeView1KeyDown( Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_SPACE) and Assigned(TreeView1.Selected) then ToggleTreeViewCheckBoxes( TreeView1.Selected, cFlatUnCheck, cFlatChecked, cFlatRadioUnCheck, cFlatRadioChecked); end; |
procedure TForm1.Button1Click(Sender: TObject); var BoolResult:boolean; tn : TTreeNode; begin if Assigned(TreeView1.Selected) then begin tn := TreeView1.Selected; BoolResult := tn.StateIndex in [cFlatChecked,cFlatRadioChecked]; Memo1.Text := tn.Text + #13#10 + 'Selected: ' + BoolToStr(BoolResult, True); //Memo给出所选中的节点和当前的状态 end; end; |
![]() |
联系客服