我希望我的用戶管人事的登錄之後就用人事菜單,其它的變灰,管理考勤的登錄之後就隻能用考勤菜單.等等.請問如何實現.最好有例程,即時給分.

解决方案 »

  1.   

    那你必须有系统登录模块,登录后获得用户身份,然后根据身份设置菜单的Enabled属性。
      

  2.   

    你的是不是很多人使用,那你必须建一权限表,在登录是读取权限表,根据权限表设置ENABLED属性
      

  3.   

    可以考虑根据需要设置菜单项(MenuItem)的两个属性:
    Enabled   True = 正常显示 False = 灰色、不可用
    Visible   True = 显示     False = 隐藏
    对于你提出的问题,使用Enabled即可。
      

  4.   

    我和你做的是同样的系统,我也有人事,考勤,工資,系統管理三个子系统。呵呵,很巧。我是这样做的,在mainform里只设置了三个按钮,分别进入三个子系统,在进入子系统前进行身份认证,不过系统还没做好。我的qq是:20822332。互相学习。
      

  5.   

    對,根據權限在主窗體OnShow中設置各菜單項的Enabled或Visable屬性
      

  6.   

    我将菜单各项 的TAG 值设置成不同级别。Mainform Active时, 循环判断一下,
    用户权限小于这个级别此菜单就可以使用if LoginUser.UserLevel <= (Mainform.components[Loop] As TmenuItem).Tag then
      (Mainform.Components[Loop] As TMenuItem).Enable := true
    else
      (Mainform.Components[Loop] As TMenuItem).Enable := false;
      

  7.   

    看看吧.
    procedure TF_Pass.BtnOKClick(Sender: TObject);
    begin
      Mypass:='';
      USERPOWER:=False;
      SPOWER1:='YYYY';SPOWER2:='YYYY';SPOWER3:='YYYY';SPOWER4:='YYYY';
      SPOWER5:='YYYY';SPOWER6:='YYYY';SPOWER7:='YYYY';SPOWER8:='YYYY';
      SPOWER9:='YYYY';SPOWER10:='YYYY';
      Mypass:=Trim(indexstr);
      with DataM do
      begin
      case (Sender as TButton).Tag of
      1:begin
          QY_Pass.Close;
          QY_Pass.SQL.Clear;
          QY_Pass.SQL.Add('Select * From POWER');
          QY_Pass.Open;
          begin
          if not QY_Pass.Locate('UserNo',Edit1.Text,[]) then
             begin
               MessageDlg('無效的用戶代號,請重新輸入', mtInformation,[mbCancel], 0);
               Edit1.SetFocus;
               Abort;
             end
          else
            begin
               if not QY_Pass.Locate('UserNo;Power', VarArrayOf([Edit1.Text, Edit2.Text]), []) then
                 begin
                   MessageDlg('無效的用戶密碼,重新輸入密碼', mtInformation,[mbCancel], 0);
                   Edit2.SetFocus;
                   Abort;
                 end
            end;
            SPower1:=QY_Pass.fieldbyName('POWER1').AsString;
            SPower2:=QY_Pass.fieldbyName('POWER2').AsString;
            SPower3:=QY_Pass.fieldbyName('POWER3').AsString;
            SPower4:=QY_Pass.fieldbyName('POWER4').AsString;
            SPower5:=QY_Pass.fieldbyName('POWER5').AsString;
            SPower6:=QY_Pass.fieldbyName('POWER6').AsString;
            SPower7:=QY_Pass.fieldbyName('POWER7').AsString;
            SPower8:=QY_Pass.fieldbyName('POWER8').AsString;
            SPower9:=QY_Pass.fieldbyName('POWER9').AsString;
            SPower10:=QY_Pass.fieldbyName('POWER10').AsString;
            if QY_Pass.FieldByName('SUPUSER').AsBoolean=True  then
                      USERPOWER:=True;
                   Close;
                   if USERPOWER=True then
                      begin
                        F_Main.Clear.Enabled:=True;
                        F_Main.Manager.Enabled:=True;
                      end
                    else
                      begin
                        F_Main.Clear.Enabled:=False;
                        F_Main.Manager.Enabled:=False;
                      end;
           // F_Main.StatusBar1.Panels[5].Text:=UpperCase(MyPass);
            Close;
          end;
        end;