2008-08-21 17:01:02 +00:00
unit uDialogElegirEMail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
2008-08-27 16:48:20 +00:00
Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, cxControls, cxContainer,
cxEdit, cxTextEdit, cxHyperLinkEdit;
2008-08-21 17:01:02 +00:00
type
TfDialogElegirEMail = class( TfDialogBase)
rbCombo: TRadioButton;
cbEMail: TComboBox;
rbEdit: TRadioButton;
edtEMail: TcxHyperLinkEdit;
2009-06-02 10:54:55 +00:00
Label1: TLabel;
2008-08-21 17:01:02 +00:00
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 ;
2008-08-25 11:08:44 +00:00
end
else
rbEdit. Checked : = True ;
2008-08-21 17:01:02 +00:00
end ;
end ;
procedure TfDialogElegirEMail. FormCloseQuery( Sender: TObject;
var CanClose: Boolean ) ;
begin
inherited ;
2008-08-25 11:08:44 +00:00
if ( ModalResult = mrOk) and rbEdit. Checked then
2008-08-21 17:01:02 +00:00
begin
2008-08-25 11:08:44 +00:00
if not EsCadenaVacia( edtEMail. Text ) then
begin
2010-06-22 14:38:19 +00:00
if not EsDireccionEMailValida( edtEMail. Text ) then
2008-08-25 11:08:44 +00:00
begin
2008-08-25 14:12:55 +00:00
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.' ) ;
2008-08-25 11:08:44 +00:00
edtEMail. SetFocus;
CanClose : = False ;
end ;
end
else begin
2008-08-25 14:12:55 +00:00
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.' ) ;
2008-08-25 11:08:44 +00:00
edtEMail. SetFocus;
CanClose : = False ;
end ;
2008-08-21 17:01:02 +00:00
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;
2008-08-25 11:08:44 +00:00
end
else begin
2008-08-21 17:01:02 +00:00
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 .