ChooseUser.pas
上传用户:dh8233980
上传日期:2014-10-16
资源大小:1015k
文件大小:5k
源码类别:

Email服务器

开发平台:

Delphi

  1. unit ChooseUser;
  2. (******************************************************************************)
  3. (*                                                                            *)
  4. (* Hermes Choose User Dialog Box                                              *)
  5. (* Part of Hermes SMTP/POP3 Server.                                           *)
  6. (* Copyright(C) 2000 by Alexander J. Fanti, All Rights Reserver Worldwide.    *)
  7. (*                                                                            *)
  8. (* Created January 14, 2000 by Alexander J. Fanti.  See License.txt           *)
  9. (*                                                                            *)
  10. (* Used by: AddEditMailList                                                   *)
  11. (* Uses: DataU1                                                               *)
  12. (*                                                                            *)
  13. (* Description: This Modal dialog window lists mail users and domains the     *)
  14. (*              server knows about.  It's useful when we need to choose       *)
  15. (*              either a user name (mailbox) or complete user e-mail address  *)
  16. (*              for something, like adding a member to a mailing list.        *)
  17. (*                                                                            *)
  18. (* Revisions: 1/21/2000  AJF  Commented                                       *)
  19. (*                                                                            *)
  20. (******************************************************************************)
  21. interface
  22. uses
  23.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  24.   StdCtrls, Buttons, ExtCtrls;
  25. type
  26.   TfrmChooseUser = class(TForm)
  27.     lstUsers: TListBox;
  28.     Panel1: TPanel;
  29.     btnOK: TBitBtn;
  30.     btnCancel: TBitBtn;
  31.     lstDomain: TComboBox;
  32.     procedure FormShow(Sender: TObject);
  33.     procedure lstUsersDblClick(Sender: TObject);
  34.   private
  35.     { Private declarations }
  36.   public
  37.     { Public declarations }
  38.     // if the user cancels, the return value from either of these functions
  39.     // will be '', remember to check for this when using these functions.
  40.     function SelectUser : String;    // ShowModal and return selected user
  41.     function SelectUsers : Boolean;
  42.     function SelectAddress : String; // ShowModal and return selected address
  43.     function SelectAddresses : Boolean;
  44.   end;
  45. var
  46.   frmChooseUser: TfrmChooseUser;
  47. implementation
  48. uses DataU1;
  49. {$R *.DFM}
  50. procedure TfrmChooseUser.FormShow(Sender: TObject);
  51. var
  52.   x : Longint;
  53. begin
  54.   // Fill the ListBox with the user names
  55.   lstUsers.Clear;
  56.   INI.User_GetList(lstUsers.Items);
  57.   // clear the domain list and fill it with the server's domains
  58.   lstDomain.Clear;
  59.   lstDomain.Items.Add(INI.ServerName);
  60.   for x := 0 to INI.Smtp_Domains.Count -1 do
  61.     lstDomain.Items.Add(INI.Smtp_Domains[x]);
  62.   // Select the first one (if available)
  63.   if lstDomain.Items.Count > 0 then lstDomain.ItemIndex := 0;
  64.   lstUsers.SetFocus;
  65. end;
  66. function TfrmChooseUser.SelectUser : String;
  67. begin
  68.   // Hide the domain list (we just want a user)
  69.   lstDomain.Visible := False;
  70.   // ShowModal and get the user's choice
  71.   if (ShowModal = mrOK) and (lstUsers.ItemIndex > -1) then
  72.     Result := Trim(lstUsers.Items[lstUsers.ItemIndex])
  73.   else Result := '';
  74. end;
  75. function TfrmChooseUser.SelectUsers : Boolean;
  76. begin
  77.   // Hide the domain list (we just want a user)
  78.   lstDomain.Visible := False;
  79.   lstUsers.MultiSelect := True;
  80.   // ShowModal and get the user's choice
  81.   Result := (ShowModal = mrOK) and (lstUsers.SelCount > 0);
  82. end;
  83. function TfrmChooseUser.SelectAddress : String;
  84. var
  85.   Domain : String;
  86. begin
  87.   // Show the domain list, we want to apply a domain to whatever is choosen
  88.   lstDomain.Visible := True;
  89.   // ShowModal and get the user's choice
  90.   if (ShowModal = mrOK) and (lstUsers.ItemIndex > -1) then begin
  91.     Domain := lstDomain.Items[lstDomain.ItemIndex];
  92.     Result := Trim(lstUsers.Items[lstUsers.ItemIndex]) + '@' + Domain;
  93.   end else Result := '';
  94. end;
  95. function TfrmChooseUser.SelectAddresses : Boolean;
  96. var
  97.   Domain : String;
  98. begin
  99.   // Show the domain list, we want to apply a domain to whatever is choosen
  100.   lstDomain.Visible := True;
  101.   lstUsers.MultiSelect := True;
  102.   // ShowModal and get the user's choice
  103.   Result := (ShowModal = mrOK) and (lstUsers.SelCount > 0);
  104. end;
  105. procedure TfrmChooseUser.lstUsersDblClick(Sender: TObject);
  106. begin
  107.   // if they double-click a list item, that's the same as clicking "OK"
  108.   btnOK.Click;
  109. end;
  110. end.