Tecsitel_FactuGES2/Source/GUIBase/uDialogElegirEMail.pas

172 lines
4.3 KiB
ObjectPascal
Raw Permalink Blame History

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)
rbCombo: TRadioButton;
cbEMail: TComboBox;
rbEdit: TRadioButton;
edtEMail: TcxHyperLinkEdit;
Label1: TLabel;
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 EsDireccionEMailValida(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.