当然,所谓的难,是相对我考虑很长时间没有解决来说的,是这样的:
要做一个权限树,动态生成,从数据库读权限id和权限名称,把权限名称给treenode的text,但是
不知把权限id赋值给treenode的什么属性,尝试了stateindex ,selectedindex都不行,而我必须
要把权限id赋值过去,因为后面要根据动态生成mainmenu的menuitem的tag和权限id去判断调用具体的
功能,不知大家能理解我的意思吗?
要做一个权限树,动态生成,从数据库读权限id和权限名称,把权限名称给treenode的text,但是
不知把权限id赋值给treenode的什么属性,尝试了stateindex ,selectedindex都不行,而我必须
要把权限id赋值过去,因为后面要根据动态生成mainmenu的menuitem的tag和权限id去判断调用具体的
功能,不知大家能理解我的意思吗?
解决方案 »
- table 的 batchmove
- DynamicSkinForm 5.90 这个控件怎么用呢?
- TStringGird控件的使用
- 怎么把固定的txt文本转换成access数据呢,请进,内详!
- 找兼职人员DELPHI6 + MAPX, 地点福州
- 小鱼儿弟弟,老叫你哥哥,哈哈,害羞了吧!来!我现在有开始研究什么Automation了!呵呵!
- 请问如何判断Windows的类型啊!(比如:Win3.1,Win95/98,WinNT)
- 怎样自定义对话框?
- 如何在代码中实现将Fields加入到 Fields Editor 中?
- 请问哪里有下载delphi5.0 的安装盘的制作程序
- sql查询问题
- 求制作椭圆形按扭的控件,我找了好久都没找到....急....谢谢了先
//否则,你就需要生成一个 Record or class 挂到treeNode.Data上
treeNode.Data := Pointer(Right_ID);
发现访问权限id:right_id:=treenode.data^出错[Error] shareunit.pas(330): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
大家帮忙吧
treenode.data是string型指针 上面的right_id也是string
可是run到上句是出现读地址错误,读了00000000地址,
说明一下,treenode.data我是赋了一个初始化的指针的,没有悬空
P = ^R;
R = record
i:integer;
.... var rs:tadoquery;
i:integer;
Nodx,FirstNode:TTreeNode ;
pt:P;
lt:TList;
begin
lt := TList.Create;
new(pt);
pt.i:=100;
lt.Clear;
lt.Add(pt);
nodx:=treeview1.Items.AddChild(ParentNode,'目录1']);
nodx.Data:=lt.Items[0];
end;showmessage(inttostr(P(TreeView1.Selected.Data)^.i));//这里就取到100了
P = ^R;
R = record
i:integer;
.... var rs:tadoquery;
i:integer;
Nodx,FirstNode:TTreeNode ;
pt:P;
lt:TList; //@@为什么要通TList去赋值呢?
begin
lt := TList.Create;
new(pt);
pt.i:=100;
lt.Clear;
lt.Add(pt);
nodx:=treeview1.Items.AddChild(ParentNode,'目录1']);
nodx.Data:=lt.Items[0];//@@直接赋一个指针型的变量为什么不可以呢?nodx.data不是pointer?
end;有谁能回复//@@后面我的迷茫吗?
type
pFields=^TFields;//定义一个记录集
TFields=Record
ID,Name:String;
end;while not rs.eof do
begin
New(pF);
pF.ID:=rs.FieldByName('ID').AsString;
pF.Name:=rs.FieldByName('Name').AsString; ComboBox1.Items.AddObject(pF.Name,TObject(pF));//
rs.next;
end;
showmessage(pFields(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).id);
var
FNodes : TTreeNode;
MyLabel : TLabel;
Begin
//取得數據源內容
while not query1.eof do Begin
FNodes := TreeView1.Items.add(nil,query1.FieldByName('Text').asString);
MyLabel := TLabel.Create(Self);
MyLabel.caption := query1.FieldByName('Id').asString;
FNodes.data := MyLabel;
Query1.Next;
end;
end;