Olá galera, nesta Quick Tips, irei mostra como podemos criar um arquivo .ini, de configuração para o nosso disparador de s. Vamos às implementações.
Veja que vamos implementar o botão de adicionar utilizando um InputQuery
procedure TFrmPrincipal.BtnAdicionarEmailClick(Sender: TObject);
Var
S : String ;
begin
InputQuery('Inclusão de ', 'Digite o novo ',s);
ChckLstBxEmail.Items.Add(S);
end;
Veja que vamos implementar o botão de deletar s que estão selecionados
procedure TFrmPrincipal.BtnDeletaEmailClick(Sender: TObject);
begin
if ChckLstBxEmail.ItemIndex > -1 then
If Application.MessageBox(PChar('Deseja Excluir o(s) (s) selecionado(s)?'),'Atenção',MB_YESNO ) = ID_YES then
ChckLstBxEmail.DeleteSelected;
end;
Veja que vamos implementar o botão de de , observe que temos um código mais simples do que parece, temos uma lista primeiro de todos os s que estão marcados, para ,pois podemos ter s no qual não queremos enviar. Logo em seguida configuramos os componentes e enviamos a mensagem, uma para cada obedecendo o tempo de configurado na aba anterior, lembram ?
procedure TFrmPrincipal.BtnEnviarClick(Sender: TObject);
Var
I,J : Integer;
Tot : Currency;
begin
Try
Try
Screen.Cursor := crHourGlass;
J := 0;
Tot := 0;
for I := 0 to ChckLstBxEmail.Count - 1 do
if ChckLstBxEmail.Checked[I] then
Inc(J);
GaugeProgresso.MaxValue := J;
J := 1;
LstBxLog.Items.Clear;
for I := 0 to ChckLstBxEmail.Count - 1 do
begin
if ((ChckLstBxEmail.Checked[I]) and (ChckLstBxEmail.State[I] <> cbGrayed)) then
begin
with IdMessage do
begin
Recipients.Clear;
CCList.Clear;
Body.Clear;
LblEmailEnviado.Caption := 'Enviando : ' + ' [ '+ IntToStr(J) + ' ] ' + ChckLstBxEmail.I
Items.Strings[I];
Inc(J);
Recipients.Add.Address := ChckLstBxEmail.Items.Strings[I];
From.Name := EdtNomeRemetente.Text ;
From.Address := EdtEmailRemetente.Text;
Subject := EdtAssuntoEmail.Text ;
Date := Date ;
if EdtCC.Text <> '' then
CCList.Add.Address := EdtCC.Text ;
MessageParts.Clear;
ContentType := 'text/html'; // Texto em HTML
Body.Assign(memoMensagem.Lines);
IdSMTP.Connect;
IdSMTP.Send(IdMessage);
ChckLstBxEmail.State[I] := cbGrayed;
Tot := Tot+ 1;
LstBxLog.Items.Add('[ ' + FormatFloat('###,###,###,###,###', Tot) + ' ] - ' + ChckLstBxEmail.It
Items.Strings[I]);
IdSMTP.Disconnect;
Sleep(StrToInt(EdtConfigTempo.Text) * 1000);
Application.ProcessMessages;
GaugeProgresso.Progress := I+1;
Application.ProcessMessages;
end;
end;
end;
except
on e:exception do
begin
Application.MessageBox(PChar('Um erro não esperado ocorreu' + #13 + #13 +
E.Message),'Erro', MB_ICONERROR);
IdSMTP.Disconnect;
Exit;
end;
end;
IdSMTP.Disconnect;
Application.MessageBox(PChar(' enviado com sucesso!'),'Informação', + MB_ICONINFORMATION);
finally
Screen.Cursor := crDefault;
GaugeProgresso.Progress :=0;
end;
end;
Veja que vamos implementar o botão de para marcar todos os s da lista
procedure TFrmPrincipal.BtnMarcarTudoClick(Sender: TObject);
Var
I : Integer;
begin
for I := 0 to ChckLstBxEmail.Count - 1 do
ChckLstBxEmail.Checked[I] := True;
end;
Veja que vamos implementar o botão para tirar a seleção de todos os s
procedure TFrmPrincipal.BtnDesmarcarTudoClick(Sender: TObject);
Var
I : Integer;
begin
for I := 0 to ChckLstBxEmail.Count - 1 do
ChckLstBxEmail.Checked[I] := False;
end;
Para finalizarmos vamos implementar o load, do HTML digitado no mmMensagem, veja o mesmo é implementado no onChange da aba.
procedure TFrmPrincipal.PgCntrl_HTMLChange(Sender: TObject);
var
S : TStringList;
begin
S := TStringList.Create;
S.AddStrings(memoMensagem.Lines);
S.SaveToFile('Index.Html');
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+ 'Index.Html');
end;
Fico por aqui ate à próxima Quick Tips, baixe o exemplo completo
neste post.
Um abraço
Y
wesley@lithic.com.br