雨
雨竹
Unregistered / Unconfirmed
GUEST, unregistred user!
问题1:这个我是做的动态窗体,但是我觉得比较苯,是响应caption才创建窗体,我在数据库中有一列是FormName,是显示窗体的名字,例如:Usermanage,Authority...我想不用响应caption才创建窗体,要从数据库中直接调用FormName.请各位大侠帮帮小弟!!谢谢了!
我的数据表为:
ID AuthID data1 FormName
1 01 用户管理 Usermanage
1 02 权限管理 Authority
With Sender as TmenuItem do
begin
if caption='用户管理' then
with TUsermanage.Create(nil) do
try
ShowModal;
finally
Free;
end;
if caption='权限管理' then
with TAuthority.Create(nil) do
try
ShowModal;
finally
Free;
end;
主菜单表(Menu01) 子菜单表(Menuo2)
MainID data ID AuthID data1 FormName
1 系统管理 1 01 用户管理 Usermanage
2 B 1 02 权限管理 Authority
3 C 2 01 B1 Log
2 02 B2 Mian1
问题2:我的动态菜单是这样创建的,但是其中中间没有记录的时候,还是一样插进去,后面的依次这样,最后少了一个位置
看看能不能帮我改改这个变量 s ,请各位大侠帮帮小弟!!谢谢了!
procedure TMain.FormShow(Sender: TObject);
var
I,s:integer;
//将符合条件的记录(包括用户名,权限),添加到MainMenu的Item上。
begin
StatusBar1.Panels[0].Text := ' 用户名:'+Login.EdtUser.Text;
Login.QueryAuth.Close;
Login.QueryAuth.SQL.Clear;
//Login.QueryAuth.SQL.Add('select data from Menu01');
Login.QueryAuth.SQL.Add('select distinct data,MainId from User1 as a,Menu01 as b,Menu02 as c,authtable as d where a.UserId=d.authUser and c.authId=d.qxauthId and b.MainId=c.Id and d.qxID=b.MainId and UserId='''+Login.EdtUser.Text+''' and authority=''Y''');
Login.QueryAuth.SQL.Add('order by MainID');
Login.QueryAuth.Active:=true;
while not Login.QueryAuth.Eof do
begin
NewItem:=TmenuItem.Create(self);
NewItem.Caption:=Login.QueryAuth.FieldValues['data'];
MainMenu1.Items.Add(NewItem);
NewItem.AutoHotkeys:=maManual;
Login.QueryAuth.Next;
end;
//将符合条件的记录(包括用户名,权限),添加到MainMenu子菜单栏上。
Login.QueryAuth.Close;
Login.QueryAuth.SQL.Clear;
Login.QueryAuth.SQL.Add('select * from User1 as a,Menu01 as b,Menu02 as c,authtable as d where a.UserId=d.authUser and c.authId=d.qxauthId and b.MainId=c.Id and d.qxid=b.mainID and UserId='''+Login.EdtUser.Text+''' and authority=''Y'' order by qxID,qxAuthID ');
Login.QueryAuth.Open;
Login.QueryAuth.Active:=true;
for i:=1 to Login.QueryAuth.RecordCount do
begin
Login.QueryAuth.Locate('data1',Trim(Login.QueryAuth.FieldValues['data1']),[]);
s:=Login.QueryAuth.FieldValues['ID'];
NewItem:=TMenuItem.Create(self);
NewItem.Caption:=Trim(Login.QueryAuth.FieldValues['data1']);
MainMenu1.Items[s-1].Add(NewItem);
NewItem.OnClick:=FrmNew;
Login.QueryAuth.Next;
end;
end;
我的数据表为:
ID AuthID data1 FormName
1 01 用户管理 Usermanage
1 02 权限管理 Authority
With Sender as TmenuItem do
begin
if caption='用户管理' then
with TUsermanage.Create(nil) do
try
ShowModal;
finally
Free;
end;
if caption='权限管理' then
with TAuthority.Create(nil) do
try
ShowModal;
finally
Free;
end;
主菜单表(Menu01) 子菜单表(Menuo2)
MainID data ID AuthID data1 FormName
1 系统管理 1 01 用户管理 Usermanage
2 B 1 02 权限管理 Authority
3 C 2 01 B1 Log
2 02 B2 Mian1
问题2:我的动态菜单是这样创建的,但是其中中间没有记录的时候,还是一样插进去,后面的依次这样,最后少了一个位置
看看能不能帮我改改这个变量 s ,请各位大侠帮帮小弟!!谢谢了!
procedure TMain.FormShow(Sender: TObject);
var
I,s:integer;
//将符合条件的记录(包括用户名,权限),添加到MainMenu的Item上。
begin
StatusBar1.Panels[0].Text := ' 用户名:'+Login.EdtUser.Text;
Login.QueryAuth.Close;
Login.QueryAuth.SQL.Clear;
//Login.QueryAuth.SQL.Add('select data from Menu01');
Login.QueryAuth.SQL.Add('select distinct data,MainId from User1 as a,Menu01 as b,Menu02 as c,authtable as d where a.UserId=d.authUser and c.authId=d.qxauthId and b.MainId=c.Id and d.qxID=b.MainId and UserId='''+Login.EdtUser.Text+''' and authority=''Y''');
Login.QueryAuth.SQL.Add('order by MainID');
Login.QueryAuth.Active:=true;
while not Login.QueryAuth.Eof do
begin
NewItem:=TmenuItem.Create(self);
NewItem.Caption:=Login.QueryAuth.FieldValues['data'];
MainMenu1.Items.Add(NewItem);
NewItem.AutoHotkeys:=maManual;
Login.QueryAuth.Next;
end;
//将符合条件的记录(包括用户名,权限),添加到MainMenu子菜单栏上。
Login.QueryAuth.Close;
Login.QueryAuth.SQL.Clear;
Login.QueryAuth.SQL.Add('select * from User1 as a,Menu01 as b,Menu02 as c,authtable as d where a.UserId=d.authUser and c.authId=d.qxauthId and b.MainId=c.Id and d.qxid=b.mainID and UserId='''+Login.EdtUser.Text+''' and authority=''Y'' order by qxID,qxAuthID ');
Login.QueryAuth.Open;
Login.QueryAuth.Active:=true;
for i:=1 to Login.QueryAuth.RecordCount do
begin
Login.QueryAuth.Locate('data1',Trim(Login.QueryAuth.FieldValues['data1']),[]);
s:=Login.QueryAuth.FieldValues['ID'];
NewItem:=TMenuItem.Create(self);
NewItem.Caption:=Trim(Login.QueryAuth.FieldValues['data1']);
MainMenu1.Items[s-1].Add(NewItem);
NewItem.OnClick:=FrmNew;
Login.QueryAuth.Next;
end;
end;