我在treeview按空格键一下,treeview在当前位置下移动一下,如何实现呀,
解决方案 »
- 问个关于 TGpBitmap 的 FromHBitmap 方法的使用
- 这样的多表查询是否可以在一条sql语句中实现?
- DBComboBox 为什么只显示第一条记录?
- 如何在鼠标移动到StringGrid的Cell上时取得该Cell的内容?
- 请教情场高手!!
- delphi生成EXE文件时检测有没dat文件才能生成exe
- 在dbgrid或dbedit控件中怎么检验输入或修改的数据的正确性?
- delphi6+access2000数据库+win2000环境的查询问题。
- sql 的update问题,树结构的运算
- 如何解决ACTIVEX程序中使用TStrings变量发生EOleException错误?
- 如何得到当前进程所在的文件夹?
- 在Quickrep里的QRDBtext如何将它自动换行呀?谢谢……
如果是请参考此贴:
http://topic.csdn.net/t/20050217/18/3788264.html
标题:移动树节点
说明:上、下、左、右移动
设计:Zswang
日期:2002-06-08
支持:[email protected]
//*)
///////Begin Source
function TreeNodeMove(mTreeNode: TTreeNode; mAnchorKind: TAnchorKind;
mIsTry: Boolean = False): Boolean;
var
vTreeNode: TTreeNode;
begin
Result := Assigned(mTreeNode);
if not Result then Exit;
case mAnchorKind of
akTop: begin
vTreeNode := mTreeNode.GetPrev;
while Assigned(vTreeNode) do begin
if vTreeNode = mTreeNode.GetPrevSibling then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naInsert);
Exit;
end else if (vTreeNode.Level = mTreeNode.Level) then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naAdd);
Exit;
end else if (vTreeNode <> mTreeNode.Parent) and
(vTreeNode.Level + 1 = mTreeNode.Level) then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naAddChild);
Exit;
end;
vTreeNode := vTreeNode.GetPrev;
end;
end;
akBottom: begin
vTreeNode := mTreeNode.GetNext;
while Assigned(vTreeNode) do begin
if vTreeNode = mTreeNode.GetNextSibling then begin
if not mIsTry then vTreeNode.MoveTo(mTreeNode, naInsert);
Exit;
end else if (vTreeNode.Level = mTreeNode.Level) then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naAddFirst);
Exit;
end else if vTreeNode.Level + 1 = mTreeNode.Level then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naAddChildFirst);
Exit;
end;
vTreeNode := vTreeNode.GetNext;
end;
end;
akLeft: begin
vTreeNode := mTreeNode.Parent;
if Assigned(vTreeNode) then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naInsert);
Exit;
end;
end;
akRight: begin
vTreeNode := mTreeNode.GetNextSibling;
if Assigned(vTreeNode) then begin
if not mIsTry then mTreeNode.MoveTo(vTreeNode, naAddChildFirst);
Exit;
end;
end;
end;
Result := False;
end; { TreeNodeMove }
///////End Source
///////Begin Demo
procedure TForm1.TreeView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if not (ssCtrl in Shift) then Exit;
case Key of
VK_UP: TreeNodeMove(TTreeView(Sender).Selected, akTop);
VK_DOWN: TreeNodeMove(TTreeView(Sender).Selected, akBottom);
VK_LEFT: TreeNodeMove(TTreeView(Sender).Selected, akLeft);
VK_RIGHT: TreeNodeMove(TTreeView(Sender).Selected, akRight);
end;
end;
procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
CheckBox1.Checked := TreeNodeMove(TTreeView(Sender).Selected, akTop, True);
CheckBox2.Checked := TreeNodeMove(TTreeView(Sender).Selected, akBottom, True);
CheckBox3.Checked := TreeNodeMove(TTreeView(Sender).Selected, akLeft, True);
CheckBox4.Checked := TreeNodeMove(TTreeView(Sender).Selected, akRight, True);
end;
///////End Demo
我在treeview按空格键一下,treeview在当前位置下移动一下,焦点往下移,结点不动
如何实现呀,
我在treeview按空格键一下,treeview在当前位置焦点移动一下,结点不动
如何实现呀,
if key = VK_SPACE then
key := VK_DOWN;