当然,所谓的难,是相对我考虑很长时间没有解决来说的,是这样的:
要做一个权限树,动态生成,从数据库读权限id和权限名称,把权限名称给treenode的text,但是
不知把权限id赋值给treenode的什么属性,尝试了stateindex ,selectedindex都不行,而我必须
要把权限id赋值过去,因为后面要根据动态生成mainmenu的menuitem的tag和权限id去判断调用具体的
功能,不知大家能理解我的意思吗?
要做一个权限树,动态生成,从数据库读权限id和权限名称,把权限名称给treenode的text,但是
不知把权限id赋值给treenode的什么属性,尝试了stateindex ,selectedindex都不行,而我必须
要把权限id赋值过去,因为后面要根据动态生成mainmenu的menuitem的tag和权限id去判断调用具体的
功能,不知大家能理解我的意思吗?
解决方案 »
- 定义一个数组,给数组里的内容设定颜色
- 关于dbgrid选择部份记录保存到别一个数据表中
- 如何让ReportBuilder能在运行时调用预先设计好的报表文件(*.rtm)?
- 如何设置toolbutton的快捷键????
- 我在DLL入口函数中这样创建一个对象不可以么?为什么总是出错?呼唤高手!!在线等待~~~
- 急用!求 对实数进行“四舍五入”的函数!
- 熟悉ListView的大虾来帮忙啊
- 怎样把一个字符串按照某个特殊的字符劈开?
- 屏蔽WIN键(在WIN 2000下)
- 如果我想在VBScript中调用一个DLL文件?要怎么办?
- 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;