git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES2/trunk@6 40301925-124e-1c4e-b97d-170ad7a8785b
186 lines
4.6 KiB
ObjectPascal
186 lines
4.6 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;
|
||
procedure SetListaDirecciones(ALista : TStringList);
|
||
public
|
||
property EMailElegido: String read GetEMailElegido;
|
||
property ListaDirecciones : TStringList read FListaDirecciones write SetListaDirecciones;
|
||
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
|
||
rbCombo.Checked := False;
|
||
cbEMail.Enabled := False;
|
||
edtEMail.Enabled := True;
|
||
edtEMail.SetFocus;
|
||
end
|
||
else begin
|
||
if rbCombo.Enabled then
|
||
begin
|
||
edtEMail.Enabled := False;
|
||
rbEdit.Checked := False;
|
||
cbEMail.Enabled := True;
|
||
cbEMail.ItemIndex := 0;
|
||
cbEMail.SetFocus;
|
||
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 := True
|
||
end
|
||
else
|
||
rbCombo.Checked := True;
|
||
|
||
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;
|
||
|
||
procedure TfDialogElegirEMail.SetListaDirecciones(ALista: TStringList);
|
||
var
|
||
i : integer;
|
||
begin
|
||
FListaDirecciones := ALista;
|
||
for i := FListaDirecciones.count - 1 downto 0 do
|
||
begin
|
||
if Trim(FListaDirecciones[i]) = '' then
|
||
FListaDirecciones.Delete(i);
|
||
end;
|
||
end;
|
||
|
||
end.
|