172 lines
4.2 KiB
ObjectPascal
172 lines
4.2 KiB
ObjectPascal
|
|
unit uDialogElegirEMail;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|||
|
|
Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, cxControls, cxContainer,
|
|||
|
|
cxEdit, cxTextEdit, cxHyperLinkEdit;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TfDialogElegirEMail = class(TfDialogBase)
|
|||
|
|
Panel1: TPanel;
|
|||
|
|
rbCombo: TRadioButton;
|
|||
|
|
cbEMail: TComboBox;
|
|||
|
|
rbEdit: TRadioButton;
|
|||
|
|
edtEMail: TcxHyperLinkEdit;
|
|||
|
|
procedure rbComboClick(Sender: TObject);
|
|||
|
|
procedure rbEditClick(Sender: TObject);
|
|||
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|||
|
|
procedure FormCreate(Sender: TObject);
|
|||
|
|
procedure FormDestroy(Sender: TObject);
|
|||
|
|
procedure FormShow(Sender: TObject);
|
|||
|
|
procedure actAceptarExecute(Sender: TObject);
|
|||
|
|
procedure actCancelarExecute(Sender: TObject);
|
|||
|
|
private
|
|||
|
|
FListaDirecciones: TStringList;
|
|||
|
|
function GetEMailElegido: String;
|
|||
|
|
procedure ActualizarOpciones;
|
|||
|
|
public
|
|||
|
|
property EMailElegido: String read GetEMailElegido;
|
|||
|
|
property ListaDirecciones : TStringList read FListaDirecciones write FListaDirecciones;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
function ElegirEMail(const AListaEMails : TStringList; var AEMailElegido : String): Boolean;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
uStringsUtils, uDialogUtils, uEMailUtils;
|
|||
|
|
|
|||
|
|
function ElegirEMail(const AListaEMails : TStringList; var AEMailElegido : String): Boolean;
|
|||
|
|
var
|
|||
|
|
AEditor : TfDialogElegirEMail;
|
|||
|
|
begin
|
|||
|
|
AEditor := TfDialogElegirEMail.Create(NIL);
|
|||
|
|
try
|
|||
|
|
AEditor.ListaDirecciones := AListaEMails;
|
|||
|
|
Result := (AEditor.ShowModal = mrOk);
|
|||
|
|
if Result then
|
|||
|
|
AEMailElegido := AEditor.EMailElegido;
|
|||
|
|
finally
|
|||
|
|
AEditor.Release;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
{ TfDialogElegirEMail }
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.actAceptarExecute(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
ModalResult := mrOk
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.actCancelarExecute(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
ModalResult := mrCancel;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.ActualizarOpciones;
|
|||
|
|
begin
|
|||
|
|
if rbEdit.Checked then
|
|||
|
|
begin
|
|||
|
|
edtEMail.Enabled := True;
|
|||
|
|
rbCombo.Checked := False;
|
|||
|
|
cbEMail.Enabled := False;
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
if rbCombo.Enabled then
|
|||
|
|
begin
|
|||
|
|
cbEMail.Enabled := True;
|
|||
|
|
edtEMail.Enabled := False;
|
|||
|
|
rbEdit.Checked := False;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
rbEdit.Checked := True;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.FormCloseQuery(Sender: TObject;
|
|||
|
|
var CanClose: Boolean);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
|
|||
|
|
if (ModalResult = mrOk) and rbEdit.Checked then
|
|||
|
|
begin
|
|||
|
|
if not EsCadenaVacia(edtEMail.Text) then
|
|||
|
|
begin
|
|||
|
|
if not IsValidEmail(edtEMail.Text) then
|
|||
|
|
begin
|
|||
|
|
ShowErrorMessage('La direcci<63>n de correo electr<74>nica no es v<>lida', 'Para poder continuar, compruebe que ha indicado una direcci<63>n de correo y que est<73> bien escrita.');
|
|||
|
|
edtEMail.SetFocus;
|
|||
|
|
CanClose := False;
|
|||
|
|
end;
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
ShowErrorMessage('Debe indicar una direcci<63>n de correo electr<74>nico.', 'Para poder continuar debe elegir o indicar una direcci<63>n de correo electr<74>nico.');
|
|||
|
|
edtEMail.SetFocus;
|
|||
|
|
CanClose := False;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.FormCreate(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
//FListaDirecciones := TStringList.Create; <- La lista se da mediante la propiedad.
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.FormDestroy(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
//FreeAndNIL(FListaDirecciones) <- La lista se da mediante la propiedad.
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.FormShow(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
cbEMail.Items.Clear;
|
|||
|
|
cbEMail.Items := FListaDirecciones;
|
|||
|
|
|
|||
|
|
if cbEMail.Items.Count = 0 then
|
|||
|
|
begin
|
|||
|
|
rbCombo.Enabled := False;
|
|||
|
|
rbEdit.Checked;
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
cbEMail.ItemIndex := 0;
|
|||
|
|
rbCombo.Checked := True;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
ActualizarOpciones;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfDialogElegirEMail.GetEMailElegido: String;
|
|||
|
|
begin
|
|||
|
|
if rbCombo.Checked then
|
|||
|
|
Result := cbEMail.Text
|
|||
|
|
else
|
|||
|
|
Result := edtEMail.Text;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.rbComboClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
rbEdit.Checked := False;
|
|||
|
|
ActualizarOpciones;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfDialogElegirEMail.rbEditClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
rbEdit.Checked := True;
|
|||
|
|
ActualizarOpciones;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|