今想将一些菜单置灰,为什么下面的代码无法控制?
procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Free;
Form3.ShowModal();
Form3.MainMenu1.Items.Items[0].Enabled:=False;
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Free;
Form3.ShowModal();
Form3.MainMenu1.Items.Items[0].Enabled:=False;
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
end;
解决方案 »
- Data Access面板里的ClientDataSet有BUG?急,在线等
- 初學者提問
- 今年开始转向VS.Net,散分
- 【算法】微软面试题,极具挑战性,要求算法解决,没事的玩玩……
- Delphi6的SQL Monitor不能追踪程序向数据库提交的SQL语句?
- 急,急,急
- ClientDataSet.CommandText执行问题
- delphi7里的报表怎么做啊??他用的控件在哪里??
- 哪位有delphi7的CD-KEY,高分相送
- 求救--在DELPHI里怎样用ADO搞定对库的访问
- 高手请指教:我用Delphi5协议各CGI,使用BDE连接Oracle8.1.7,了解失败,但是在普通程序中一切OK,在CGI中使用Interbase或其他数据库都可以,请
- 如何用数据库的表动态生成treeview?
MainMenu1.Items.Items[0].Items[0].Enabled:=False;
第一个Items[0]指主菜单中横向显示的那些菜单项。
第二个Items[0]指弹出的下拉菜单中的选项。
for j:=0 to 8 do
Form3.MainMenu1.Items.Items[j].Enabled:=False;
begin
Form2.Free;
Form3.ShowModal();
Form3.MainMenu1.Items.Items[0].Enabled:=False;
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
end;
你试一下
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+
ExtractFilePath(Application.ExeName)+'Lin.mdb;Persist Security Info=True';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from TBUser');
ADOQuery1.SQL.Add('where UserName='''+Edit1.Text+'''');
ADOQuery1.SQL.Add(' and UserPwd ='''+Edit2.Text+'''');
ADOQuery1.Active:=True;
ADOQuery1.Open;
if (ADOQuery1.RecordCount<>1) then
begin
ShowMessage('用户名或密码错误,请检查');
Edit1.SetFocus;
Exit;
end
else
begin
Application.CreateForm(TForm3, Form3);
if ADOQuery1.FieldValues['UserLevel']='2' then
begin
{
Form3.MainMenu1.Items[0].Enabled:=False;
Form3.MainMenu1.Items[1].Enabled:=False;
Form3.MainMenu1.Items[2].Enabled:=False;
Form3.MainMenu1.Items[3].Enabled:=False;
Form3.MainMenu1.Items[4].Enabled:=False;
Form3.MainMenu1.Items[5].Enabled:=False;
Form3.MainMenu1.Items[6].Enabled:=False;
Form3.MainMenu1.Items[7].Enabled:=False;
Form3.MainMenu1.Items[8].Enabled:=False;
}
End;
end;
end;
因无法控制,所以改到Form3里试试,可还是不行
再把要要用的恢复。
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
Form3.ShowModal();
只要把 Form3.ShowModal();放在后面就可以了
之后关闭FORM3之后才执行
看来在午饭前无法解决,先吃饭再说。
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+
ExtractFilePath(Application.ExeName)+'Lin.mdb;Persist Security Info=True';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from TBUser');
ADOQuery1.SQL.Add('where UserName='''+Edit1.Text+'''');
ADOQuery1.SQL.Add(' and UserPwd ='''+Edit2.Text+'''');
ADOQuery1.Active:=True;
ADOQuery1.Open;
if (ADOQuery1.RecordCount<>1) then
begin
ShowMessage('用户名或密码错误,请检查');
Edit1.SetFocus;
Exit;
end
else
begin
Application.CreateForm(TForm3, Form3);
if ADOQuery1.FieldValues['UserLevel']='2' then
begin
Form3.MainMenu1.Items.Items[0].Enabled:=False;
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
End;
end;
end;*************************************************************procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Free;
Form3.ShowModal();
end;
if not Assigned(Form3) then Form3 := TForm3.Create(Application);
if ADOQuery1.FieldValues['UserLevel']='2' then
begin
Form3.MainMenu1.Items.Items[0].Enabled:=False;
Form3.MainMenu1.Items.Items[1].Enabled:=False;
Form3.MainMenu1.Items.Items[2].Enabled:=False;
Form3.MainMenu1.Items.Items[3].Enabled:=False;
Form3.MainMenu1.Items.Items[4].Enabled:=False;
Form3.MainMenu1.Items.Items[5].Enabled:=False;
Form3.MainMenu1.Items.Items[6].Enabled:=False;
Form3.MainMenu1.Items.Items[7].Enabled:=False;
Form3.MainMenu1.Items.Items[8].Enabled:=False;
end;
Form3.ShowModal;
下面的就不要了
procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Free;
Form3.ShowModal();
end;
最好将的 'UserLevel' 值做为参数给Form3传递。
---------------------------------