U_dlck.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:5k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_dlck;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ExtCtrls, StdCtrls, Buttons, Mask, Db, DBClient, winsock, jpeg, variants, ComCtrls;
  6. type
  7.   TfrmLogin = class(TForm)
  8.     Panel1: TPanel;
  9.     Label1: TLabel;
  10.     Label2: TLabel;
  11.     Label3: TLabel;
  12.     Panel2: TPanel;
  13.     btnOK: TSpeedButton;
  14.     btnCancel: TSpeedButton;
  15.     Image1: TImage;
  16.     edtAliasName: TEdit;
  17.     edtPassword: TEdit;
  18.     procedure btnCancelClick(Sender: TObject);
  19.     procedure edtAliasNameKeyDown(Sender: TObject; var Key: Word;
  20.       Shift: TShiftState);
  21.     procedure edtPasswordKeyDown(Sender: TObject; var Key: Word;
  22.       Shift: TShiftState);
  23.     procedure btnOKClick(Sender: TObject);
  24.   private
  25.     vFuncs: variant; //存储用户功能列表
  26.     function FindFuncs(const aFunc: string): boolean; //查找功能项是否存在
  27.     procedure setFuncs; //设置主窗体菜单的有效性
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32. function LoginExecute(aFormClass: TFormClass): Boolean; //打开登录窗口,并判断是否登录成功
  33. var
  34.   frmLogin: TfrmLogin;
  35.   Logined: Boolean = false;
  36. implementation
  37. uses U_mainform, WzglDB, u_public;
  38. {$R *.DFM}
  39. //打开登录窗口,并判断是否登录成功
  40. function LoginExecute(aFormClass: TFormClass): Boolean;
  41. begin
  42.   with aFormClass.Create(Application) do
  43.   begin
  44.     Logined := False;
  45.     try
  46.       showModal;
  47.     finally
  48.       free;
  49.     end;
  50.     result := Logined;
  51.   end;
  52. end;
  53. procedure TfrmLogin.btnCancelClick(Sender: TObject);
  54. begin
  55.   close;
  56. end;
  57. procedure TfrmLogin.edtAliasNameKeyDown(Sender: TObject; var Key: Word;
  58.   Shift: TShiftState);
  59. begin
  60.   if key = 13 then
  61.     edtPassword.setfocus;
  62. end;
  63. procedure TfrmLogin.edtPasswordKeyDown(Sender: TObject; var Key: Word;
  64.   Shift: TShiftState);
  65. begin
  66.   if key = 13 then
  67.     btnOK.click;
  68. end;
  69. //确定按钮点击过程
  70. procedure TfrmLogin.btnOKClick(Sender: TObject);
  71. var
  72.   vYhbh, vZh: variant;
  73.   i: integer;
  74.   vLogined: variant;
  75.   vAliasName, vPassword: string;
  76.   vLoginTime: variant;
  77. begin
  78.   vAliasName := edtAliasName.text;
  79.   vPassword := edtPassword.Text;
  80.   frmMain.SocketConnection.AppServer.Logined(vAliasName, vPassword, vYhbh, vzh, vLogined);
  81.   if not vLogined then
  82.   begin
  83.     Application.MessageBox('用户名和密码不正确,请重新输入', '提示信息', mb_iconInformation + mb_defbutton1);
  84.     exit;
  85.   end
  86.   else
  87.   begin
  88.     //向全局记录变量CurrentParam赋值
  89.     CurrentParam.userAliasName := edtAliasName.Text;
  90.     CurrentParam.userBH := vYhbh;
  91.     CurrentParam.userZH := vZh;
  92.     CurrentParam.Host := GetComputerName;
  93.     CurrentParam.IP := GetComputerIp;
  94.     frmMain.SocketConnection.AppServer.GetSysTime(vLoginTime);
  95.     CurrentParam.LoginTime := vLoginTime;
  96.   end;
  97.   //设置主窗口菜单的有效性
  98.   SetFuncs;
  99.   //向应用服务器显示连接信息
  100.   frmMain.SocketConnection.AppServer.AddUser(CurrentParam.Host, CurrentParam.IP, CurrentParam.userAliasName, CurrentParam.LoginTime);
  101.   Logined := true;
  102.   Close;
  103. end;
  104. //设置主窗体菜单的有效性
  105. procedure TfrmLogin.setFuncs;
  106. var
  107.   vn_node, vn_node1, vn_node2, vn_node3: TTreenode;
  108.   i, i1, i2: integer;
  109.   vs_caption: string;
  110. begin
  111.   with frmMain do
  112.   begin
  113.     SocketConnection.AppServer.GetFuncs(currentParam.userZH, vFuncs);
  114.     N_A.visible := false;
  115.     N_B.visible := false;
  116.     N_c.Visible := False;
  117.     N_d.visible := False;
  118.     N_E.visible := False;
  119.     if currentParam.userAliasName <> 'system' then
  120.       N_H_2.visible := false;
  121.     vn_node := treeview1.Items.add(treeview1.topitem, '通用物资管理');
  122.     vn_node.ImageIndex := 0;
  123.     vn_node.StateIndex := -1;
  124.     vn_node.SelectedIndex := 1;
  125.     for i := 0 to 4 do
  126.     begin
  127.       vs_caption := mainmenu.items[i].caption;
  128.       vn_node1 := treeview1.items.addchild(vn_node, vs_caption);
  129.       vn_node1.ImageIndex := 0;
  130.       vn_node1.StateIndex := -1;
  131.       vn_node1.SelectedIndex := 1;
  132.       for i1 := 0 to mainmenu.Items[i].count - 1 do
  133.       begin
  134.         vs_caption := mainmenu.items[i].items[i1].caption;
  135.         if not FindFuncs(vs_caption) then
  136.         begin
  137.           mainmenu.items[i].items[i1].visible := false;
  138.           continue;
  139.         end;
  140.         vn_node2 := treeview1.Items.AddChild(vn_node1, vs_caption);
  141.         vn_node2.ImageIndex := 0;
  142.         vn_node2.StateIndex := -1;
  143.         vn_node2.SelectedIndex := 1;
  144.         for i2 := 0 to mainmenu.items[i].items[i1].count - 1 do
  145.         begin
  146.           vs_caption := mainmenu.items[i].items[i1].items[i2].Caption;
  147.           if not FindFuncs(vs_caption) then
  148.           begin
  149.             mainmenu.items[i].items[i1].items[i2].visible := false;
  150.             continue;
  151.           end;
  152.           vn_node3 := treeview1.items.addchild(vn_node2, vs_caption);
  153.           vn_node3.ImageIndex := 0;
  154.           vn_node3.StateIndex := -1;
  155.           vn_node3.SelectedIndex := 1;
  156.         end;
  157.       end;
  158.     end;
  159.   end;
  160. end;
  161. //查找功能项是否存在
  162. function TfrmLogin.FindFuncs(const aFunc: string): boolean;
  163. var
  164.   i: integer;
  165.   bFunc: string;
  166. begin
  167.   Result := False;
  168.   if (varIsArray(vFuncs)) then
  169.   begin
  170.     for i := varArrayLowBound(vfuncs, 1) to varArrayHighBound(vfuncs, 1) do
  171.     begin
  172.       bFunc := vFuncs[i];
  173.       if bFunc = aFunc then
  174.       begin
  175.         result := true;
  176.         exit;
  177.       end;
  178.     end;
  179.   end;
  180. end;
  181. end.