git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@530 0c75b7a4-871f-7646-8a2f-f78d34cc349f
177 lines
4.6 KiB
ObjectPascal
177 lines
4.6 KiB
ObjectPascal
unit uDialogElegirEMail;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, dxSkinsCore, dxSkinBlue,
|
||
dxSkinCaramel, dxSkinCoffee, dxSkinGlassOceans, dxSkiniMaginary, dxSkinLilian,
|
||
dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
|
||
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
|
||
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinSilver, dxSkinStardust,
|
||
dxSkinsDefaultPainters, dxSkinValentine, dxSkinXmas2008Blue, 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('Elegir direcci<63>n de correo electr<74>nico', 'La direcci<63>n de correo electr<74>nica no es v<>lida. Compruebe que est<73> bien escrita.');
|
||
edtEMail.SetFocus;
|
||
CanClose := False;
|
||
end;
|
||
end
|
||
else begin
|
||
ShowErrorMessage('Elegir direcci<63>n de correo electr<74>nico', 'Debe 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.
|