两个问题:1 dxTreeList.dragNode(100分) 2 NEW 与MOVE(100分) (200分)

  • 主题发起人 主题发起人 zlj555
  • 开始时间 开始时间
Z

zlj555

Unregistered / Unconfirmed
GUEST, unregistred user!
1 如何使代码,选择dxTreeList上的某个节点
TreeView的方法为: TreeView1.selected := TreeView1.Items[5];
但是dxTreeList的该如何呢?

获得dxTreeList的当前被选的NODE,该怎么办?我用DragNode,但是使用Focused时,
DragNode不会跟随改变。

2
type
pStudent =^TStudent;
TStudent=record
name : string;
sex : string;
end;

var
stu1,stu2 : pStudent;
begin
new(stu1);
new(stu2); //New是给指针本身分配空间还是给要指向的内容分配空间
stu1^.name := 'zlj';
stu1^.sex := 'll';
move(stu1,stu2,sizeof(stu1));//Stu2与Stu1指向相同的地址空间,如何指到不同的地址空间
showMessage(stu2^.name);
dispose(stu1);
showMessage(stu2^.name);
 
1、用递归的方法查找到你要的节点,再把它的Selected设为True
2、指针本身在你声明的时候就分配了空间了,用NEW当然是为其所指向的内容分配
type
pStudent =^TStudent;
TStudent=record
name : string[10]; //改成短字符串,用MOVE才有效,否则只是把指针赋值了
sex : string[10];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
stu1,stu2 : pStudent;
begin
new(stu1);
new(stu2); //New是给指针本身分配空间还是给要指向的内容分配空间
stu1^.name := 'zlj';
stu1^.sex := 'll';
move(stu1^,stu2^,sizeof(stu1));
//Stu2与Stu1本来就指向不同的地址空间,上面这句的作用是把stu1的内容赋给stu2
showMessage(stu2^.name);
dispose(stu1);
//要把上面的string改成string[20]才不会出错,否则上面的move只是把stu1^.name这个指
//针赋给了stu2^.name,当stu1被dispose后,stu2^.name就指向了无效内存。
showMessage(stu2^.name);
dispose(stu2);
end;
 
to xianjun:对于第一个问题我那样做了,但是被选的那个蓝条不动。
第二个问题
我按你的去做了,改为了短整型,但是我两个Name地址空间在MOVE后仍是一样的。 不信你
试试看。:《
 
对于dxTreeList要选中某一个ITEM不是用selected,而是用focused
 
1、如果不是selected,那就是focused属性,你试试,我也记不太清楚了。
2、 ShowMessage(Format('@(stu1^.name): %p @(stu2^.name): %p', [@(stu1^.name), @(stu2^.name)]));
可以看出,两个并不是一样的!
 
to XianjUN :你那SHOW不能证明什么的。@(stu2^.name)只是指向name指针的地址,而不是
指向内容的地址。你改为
ShowMessage(integer(@((@(stu2^.name))^)) +integer(@((@(stu1^.name))^))


 
获得dxTreeList的当前被选的NODE,该怎么办?我用DragNode,但是使用Focused时,
DragNode不会跟随改变。
 
to zlj555:
我给你发mail了,没问题了吧?
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
418
import
I
I
回复
0
查看
584
import
I
I
回复
0
查看
694
import
I
后退
顶部