我在创建treeview的时候,节点的Data保存的是数据表中一字段值,但在读取的时候为什么不论选择的是哪个节点,其Data值都是一样???
解决方案 »
- 远程com对象调用的困惑
- 一打开项目文件就报错,请问怎么回事Access violation at address 4000586A in module ‘rtl60.bpl’. Read of address 400A1004.
- 我想参加金思维科技有限公司的DELPHI开发培训??大伙儿给个建议。及DELPHI的前景。
- 想用DBchart显示一个表
- 网络数据库的开发(小小的,呵呵)
- 关于Table和ADOTable的一些简单问题.在线等.
- 初学者请问一个简单的问题(关于脚本)
- 向高手请教:关于显示“系统正在操作中”的提示
- 为什么varchar 字段只能读出一部分?
- 菜鸟小问题,谁能帮我编两个小涵数,送分!
- 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
还是内存分配的问题啊