帮帮忙~~~
1.不懂要怎么和数据库表中的一个bit类型字段关联起来,为真是树为选中状态,为假时则不选中
2.要怎么跟其它的表联系起来....比如,在表格中选中某行记录时,显示相应的权限...(两个表,一个表中有用户编号,权限表中也有用户编号),根据编号来取权限表中的相应模块的权限......并用RzCheckTreer 的状态来表示权限
3.在打开这个窗体时.根据当前登录的用户编号...进行树的节点加载同时判断该用户的权限
真晕~~~又是树~~
1.不懂要怎么和数据库表中的一个bit类型字段关联起来,为真是树为选中状态,为假时则不选中
2.要怎么跟其它的表联系起来....比如,在表格中选中某行记录时,显示相应的权限...(两个表,一个表中有用户编号,权限表中也有用户编号),根据编号来取权限表中的相应模块的权限......并用RzCheckTreer 的状态来表示权限
3.在打开这个窗体时.根据当前登录的用户编号...进行树的节点加载同时判断该用户的权限
真晕~~~又是树~~
解决方案 »
- FastReport 打印连续纸问题
- 下面的代码哪里错了
- delphi怎么读出网络上的记事本文件中的内容
- 如何判断一个窗体打开了多少次
- 求一非递归算法!非递归!
- 请问如何在文本框中只能输入数字?
- 请教:我把Clientdataset的Active设为True时出现提示:BOF或EOF中有一个是"真",或者当前的记录已经被删除,所需的操作要求一个当前的记录.
- 谢谢大家!
- 请问大家有没有可用的 google地址
- 自己写的程序:让一个会改变TITLE的EXE文件只运行一次。。。。
- 怎么用 程序 检查 注册表最后修改的时间 ?? 和怎么用程序 备份注册表 急!!!!!!!!!!!!!!!!!!!!
- 控件绑定的问题
csChecked: //选中
csUNChecked: //非选中
1.要怎么屏蔽这个复选的功能?
2.让主窗体上的菜单.最上面的一排的ENABLE为FALSE..不懂怎么设
while not adoquery1.Eof do
begin
mode_id := trim(adoquery1.fieldbyname('mode_id').AsString);
for i := 0 to MainMenu1.Items.Count - 1 do
begin
if MainMenu1.Items[i].Name= mode_id then
begin
if adoquery1.FieldByName('Examine').AsBoolean = false then
MainMenu1.Items[i].Enabled:=false //这样写不行,要是条件为真.整个菜单都没了
else
MainMenu1.Items[i].Enabled:=true;
end;
for j := 0 to mainmenu1.items[i].count - 1 do
begin
if MainMenu1.Items[i].Items[j].Name = mode_id then
begin
if adoquery1.FieldByName('Examine').AsBoolean = false then
MainMenu1.Items[i].Items[j].Enabled := false
else
MainMenu1.Items[i].Items[j].Enabled := true;
end;
end;
end;
adoquery1.Next;
end;
ModuleCode ModuleName ModuleLevel
---------------------------------------- ---------------------------------------- -----------
11 系统维护 1
21 基础资料 1
31 采购管理 1
31-31 采购收货单 2
31-31-101 采购收货单-开单 3
31-31-102 采购收货单-修改 3
31-31-103 采购收货单-删除 3
31-41 采购付款单 2
31-41-101 采购付款单-开单 3
31-41-102 采购付款单-修改 3
31-41-103 采购付款单-删除 3
31-51 采购退货单 2
31-51-101 采购退货单-开单 3
31-51-102 采购退货单-修改 3
31-51-103 采购退货单-删除 3
32 销售管理 1
{******************************************************************************}
--模块编码
2 SQL 语句如下,注意 ORDER BY ModuleCode
SELECT ModuleCode,ModuleName,ModuleLevel FROM SB_Modules ORDER BY ModuleCode
/*
SELECT ModuleCode,ModuleName,LeafModuleSign,ParentModuleCode,ModuleLevel FROM SB_Modules ORDER BY ModuleCode
*/
{******************************************************************************}3,代码如下procedure TfrmPurviewAssign.BuildCheckTree(pDataSet:TDataSet);
var
iLevel:Integer;
sCode,sName:string;
MyNode:array[0..10]of TTreeNode;//保存各级节点,最长支持 10 级(重点)
begin
Screen.Cursor:=crHourGlass;
ckTreePurview.Items.Clear;
//FIDList.Clear;
with pDataSet do
begin
First;
//以上是增加第一项
while not Eof do
begin
sCode:=Trim(FieldByName(Purviews.FModuleCode_FieldName).AsString);
sName:=Trim(FieldByName(Purviews.FModuleName_FieldName).AsString);
iLevel:=FieldByName(Purviews.FModuleLevel_FieldName).AsInteger;
if iLevel=1 then//确保代码符合标准
begin
MyNode[iLevel]:=ckTreePurview.Items.AddChild(nil,sName);
end
else
begin
MyNode[iLevel]:=ckTreePurview.Items.AddChild(MyNode[iLevel-1],sName);
end;
//MyNode[iLevel].ImageIndex:=iLevel;
//MyNode[iLevel].SelectedIndex:=iLevel-1;
Next;
end;
First;
end;
Screen.Cursor:=crDefault;
end;
{******************************************************************************}
procedure TfrmPurviewAssign.SetCheckedTree(pModuleDataSet:TDataSet;pPurviewDataSet:TDataSet);
var
I:integer;
iRecNO:integer;
begin
FInitFlag:=True;
for I:=0 to ckTreePurview.Items.Count-1 do
begin
iRecNO:=I+1;
Purviews.MoveToModuleCode(iRecNO);
Purviews.ModuleCode:=Purviews.GetModuleCode;
if Purviews.LocatePurview(Purviews.ModuleCode) then
begin
ckTreePurview.ItemState[I]:=csChecked;
end
else
begin
ckTreePurview.ItemState[I]:=csUnChecked;
end;
end;
FInitFlag:=False; Purviews.MoveToModuleCode(1);
end;
呵呵...谢谢你了~~~