ChooseUser.pas
上传用户:dh8233980
上传日期:2014-10-16
资源大小:1015k
文件大小:5k
- unit ChooseUser;
- (******************************************************************************)
- (* *)
- (* Hermes Choose User Dialog Box *)
- (* Part of Hermes SMTP/POP3 Server. *)
- (* Copyright(C) 2000 by Alexander J. Fanti, All Rights Reserver Worldwide. *)
- (* *)
- (* Created January 14, 2000 by Alexander J. Fanti. See License.txt *)
- (* *)
- (* Used by: AddEditMailList *)
- (* Uses: DataU1 *)
- (* *)
- (* Description: This Modal dialog window lists mail users and domains the *)
- (* server knows about. It's useful when we need to choose *)
- (* either a user name (mailbox) or complete user e-mail address *)
- (* for something, like adding a member to a mailing list. *)
- (* *)
- (* Revisions: 1/21/2000 AJF Commented *)
- (* *)
- (******************************************************************************)
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Buttons, ExtCtrls;
- type
- TfrmChooseUser = class(TForm)
- lstUsers: TListBox;
- Panel1: TPanel;
- btnOK: TBitBtn;
- btnCancel: TBitBtn;
- lstDomain: TComboBox;
- procedure FormShow(Sender: TObject);
- procedure lstUsersDblClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- // if the user cancels, the return value from either of these functions
- // will be '', remember to check for this when using these functions.
- function SelectUser : String; // ShowModal and return selected user
- function SelectUsers : Boolean;
- function SelectAddress : String; // ShowModal and return selected address
- function SelectAddresses : Boolean;
- end;
- var
- frmChooseUser: TfrmChooseUser;
- implementation
- uses DataU1;
- {$R *.DFM}
- procedure TfrmChooseUser.FormShow(Sender: TObject);
- var
- x : Longint;
- begin
- // Fill the ListBox with the user names
- lstUsers.Clear;
- INI.User_GetList(lstUsers.Items);
- // clear the domain list and fill it with the server's domains
- lstDomain.Clear;
- lstDomain.Items.Add(INI.ServerName);
- for x := 0 to INI.Smtp_Domains.Count -1 do
- lstDomain.Items.Add(INI.Smtp_Domains[x]);
- // Select the first one (if available)
- if lstDomain.Items.Count > 0 then lstDomain.ItemIndex := 0;
- lstUsers.SetFocus;
- end;
- function TfrmChooseUser.SelectUser : String;
- begin
- // Hide the domain list (we just want a user)
- lstDomain.Visible := False;
- // ShowModal and get the user's choice
- if (ShowModal = mrOK) and (lstUsers.ItemIndex > -1) then
- Result := Trim(lstUsers.Items[lstUsers.ItemIndex])
- else Result := '';
- end;
- function TfrmChooseUser.SelectUsers : Boolean;
- begin
- // Hide the domain list (we just want a user)
- lstDomain.Visible := False;
- lstUsers.MultiSelect := True;
- // ShowModal and get the user's choice
- Result := (ShowModal = mrOK) and (lstUsers.SelCount > 0);
- end;
- function TfrmChooseUser.SelectAddress : String;
- var
- Domain : String;
- begin
- // Show the domain list, we want to apply a domain to whatever is choosen
- lstDomain.Visible := True;
- // ShowModal and get the user's choice
- if (ShowModal = mrOK) and (lstUsers.ItemIndex > -1) then begin
- Domain := lstDomain.Items[lstDomain.ItemIndex];
- Result := Trim(lstUsers.Items[lstUsers.ItemIndex]) + '@' + Domain;
- end else Result := '';
- end;
- function TfrmChooseUser.SelectAddresses : Boolean;
- var
- Domain : String;
- begin
- // Show the domain list, we want to apply a domain to whatever is choosen
- lstDomain.Visible := True;
- lstUsers.MultiSelect := True;
- // ShowModal and get the user's choice
- Result := (ShowModal = mrOK) and (lstUsers.SelCount > 0);
- end;
- procedure TfrmChooseUser.lstUsersDblClick(Sender: TObject);
- begin
- // if they double-click a list item, that's the same as clicking "OK"
- btnOK.Click;
- end;
- end.