http://expert.csdn.net/Expert/topic/2583/2583726.xml?temp=.5117914
解决方案 »
- 请教d2010启动报错"displayNotification: 内存不够"的原因
- 一个小小的ListView的界面效果问题
- delphi(ado)+mysql4的中文问题!!!有经验的请进!!!解决不了拉要疯了!!!
- 100分,请问:开发数据库系统是不是用PowerBuilder比用Delphi功能更强大些
- 救命!用DELPHI控制WORD中被修改内容是否显示
- 请问QUERY组件的问题
- 关于fastreport的一个比较难的问题,高手请进!
- 请大家关注这个网站,http://quanyi.diy.163.com
- 谁有Wise Installer 的安装程序密码,请提供我行吗?
- 用delphi做个象pws的东西,就是个人服务器
- 大家生蛋快乐。
- intraweb+webmodule 请大家关注一下
http://expert.csdn.net/Expert/topic/2585/2585941.xml?temp=.6560022
addchildobject(Parent: TTreeNode; const S: string; Ptr: Pointer): TTreeNode;
parent:表示上一层节点。
s :表示要显示的字符串。
Ptr:该节点要附加的信息。一般传递一个记录的指针。记录的使用:(声明一个名为Pxxx的记录)
Pxxx=record
id1:integer;
id2:integer;
...其他记录成员
end;Txxx=^Pxxx; //把记录指向一个类。
其他的,在你引用的文章中已经很清楚的解释了,请你好好看看。
我的写的代码你看了吗?不知有没有错误!是你说的方法吧!可为什么我在
procedure TForm4.TreeView1Click(Sender: TObject)读出TV内容,总是显示最后加入的一个记录呀!
procedure TForm4.TreeView1Click(Sender: TObject);
begin
ShowMessage(PMyRecord(Treeview1.Selected.Data).department_name);
end;
明天早上给你,前提你要把你的说明写完整;
_____________________________________________________________________暮春三月,羊欢草长,天寒地冻,问谁饲狼?人心怜羊,狼心独怆,天心难测,世情如
霜……{言有尽而意无穷,余意尽在不言中……}
可又遇到新问题了!
这样作就没有问题,可以显示出来。
procedure TForm4.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
begin
showmessage(Trim(PMyRecord(TreeView1.selected.data)^.department_id));
end
可这样为什么就不行,老是报错。
procedure TForm4.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var
aStr:string;
begin
aStr:=Trim(PMyRecord(TreeView1.selected.data)^.department_id);
showmessage(aStr);
end
/*
我要读出department_id的值,以此为检索条件(和上面的错误提示一样):
aStr:='Select * From Worker ';
aStr:=aStr+'Where work_department='+Trim(PMyRecord(TreeView1.selected.data)^.department_id)+';';
ADOQbm.Connection:=MainForm.ADOConnection1;
ADOQbm.SQL.Clear;
ADOQbm.SQL.Add(aStr);
ADOQbm.Prepared;
ADOQbm.Open;
*/
还有释放指针应该怎样作?用dispose()可以吗?
aStr:='Select work_id,work_name From worker';
aStr:=aStr+' Where work_department='+Trim(PMyRecord(TreeView1.selected.data).department_id)+';';
为什么会出错呀!用Showmessage(PMyRecord(TreeView1.selected.data).department_id)都可以显示出来数据。
TreeView1.selected.data只能保存四个字节的内容~~
一个string不定多少字节!~~
动态生成Treeview时,new()的指针不能dispose(),不然的话,Treeview中的Data也会被dispose掉了。
var
k,j:Integer;
TNode,TNode_Root:TTreeNode;
Begin
ADOTable1.Active:=False;
ADOTable1.Active:=True;
ADOQuery2.Active:=False;
ADOTable1.Open;
TreeView1.Items.Clear;
TNode_Root:=TreeView1.Items.Add(nil,'部门管理');
For k:=1 To ADOTable1.RecordCount Do
Begin
new(p); //每加一个new一个~~
p.department_id:=ADOTable1.FieldByName('department_id').AsString;
p.department_name:=ADOTable1.FieldByName('department_name').AsString;
TNode:=Treeview1.Items.AddChildObject(TNode_Root,p.department_name,p);
ADOTable1.Next;
End;
ADOQuery2.Active:=False;
End;//释放的时候~~
var
I: Integer;
begin
for I := 0 to TreeView1.Items.Count - 1 do
if Assigned(TreeView1.Items[I].Data) then
Dispose(PMyRecord(TreeView1.Items[I].Data));