我在创建treeview的时候,节点的Data保存的是数据表中一字段值,但在读取的时候为什么不论选择的是哪个节点,其Data值都是一样???
解决方案 »
- 我想使ScrollBox在显示滚动条时,随着鼠标滚轮的滚动而使滚动调上下滚动,请问各位该如何做?
- 最近花了点时间写了个三层的“综合考试系统”,现免费发布欢迎大家测试....谢谢,UP有分。
- 关于面向对象的一个问题 .
- C代码转换成Delphi的问题
- 100分在线等待:拷屏老不成功,请大侠 指点
- SQL2000+DELPHI的发布问题
- 简单问题!如何做成那种向导的样式?谢谢!
- *****************如何实现从网页中将URL托动到Edit中的效果?最好有源码********急!急!急!急!急!急!急!急!*******来者有分!!
- 万分恭敬十分谦虚百分之百热情的向大家请教一个问题~我所有的分数都在这里了~
- 怎样得到CPU的ID?
- TXMLDocument读取loadfromfile('xmlfile.xml'),怎么读取结点信息?
- 请问怎样检测ADOCONNECTION的状态?
type
PMyData = ^TMyData;
TMyData = record
Flag: Integer;
ID: Integer;
end;在程序中
var
P_Data:PMyData;
begin
P_Data.ID:=TempData.FieldByName('ID').Value;
end以上方法就可以了,读取
P_Data:=Node.Data
var
i:integer;
P_Data:PMyData;
begin
for i:=0 TreeView1.Items.Count-1 do
begin
new(P_Data); //如果没有这一句,就全完了
P_Data.ID:=TempData.FieldByName('ID').Value;
TreeView1.Items[i].Data:=P_Data;
end;
end;
function TAppPublic.CreateTreeView(ADataSet, ADataSetUser : TADODataSet; ACreateUsers : Boolean; ATreeView : TTreeView) : Boolean;
var
P : PString;
PChinesName : string;
PList : TStringList;
i, j : integer;
PFieldName, PFieldChinese : string;
RootNode, SubNode : TTreeNode;
begin
Result := False;
if (ADataSet = nil) or (ADataSetUser = nil) or (ATreeView = nil) then exit;
if FileExists(ExtractFilePath(Application.ExeName) + ORACLE_OBJECTS_FILE) then
begin
try
PList := TStringList.Create;
PList.LoadFromFile(ExtractFilePath(Application.ExeName) + ORACLE_OBJECTS_FILE);
// 如果动态创建Oracel对象及用户数组成功,则构建对象树
if CreateArrayObjects(ADataSet, ADataSetUser, ACreateUsers) then
begin
New(P);
with ATreeView.Items do
begin
Clear;
BeginUpdate;
// 创建用户对象节点
for i := Low(FArrayObjects) to High(FArrayObjects) - 1 do
begin
P^ := FArrayObjects[i];
// 取得Oracle对象对应中文名
PChinesName := PList.Values[FArrayObjects[i]];
RootNode := AddObject(nil, PChinesName + '(' + FArrayObjects[i] + ')', P);
RootNode.ImageIndex := 0;
RootNode.SelectedIndex := 1;
// 如果登录用户为系统用户,则构建Oracel所有用户子节点
if ACreateUsers then
begin
for j := Low(FArrayUsers) to High(FArrayUsers) - 1 do
begin
P^ := FArrayUsers[j];
SubNode := AddChildObject(RootNode, FArrayUsers[j], p);
SubNode.ImageIndex := 3;
SubNode.SelectedIndex := 7;
end;
end;
end;
EndUpdate;
end;
end;
finally
PList.Free;
end;
end
else
begin
MessageBox(Application.Handle, PChar(ORACLE_OBJECTS_FILE + '文件丢失,请检查!!!'), '系统配置错误', MB_OK);
Result := False;
exit;
end;
ATreeView.Items[0].Selected := True;
// 展开第一个结点
//ATreeView.Items[0].Expand(False);
Result := True;
end;
P_Data:PMyData;
begin
P_Data.ID:=listview1.selected.data;
......
end
还是内存分配的问题啊