Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. use da mesma forma na configuração do SMTP use um 2º Memo e coloque, nessa ordem, essa configuração Porta , Host, Usuario e Senha 465;smtp.gmail.com;usuario;senha; vou colocar separado do seu código principal para voce entender como extrair essa informação do memo e jogar em variaveis cada variavel vai receber o valor ( texto ) que esta entre ponto e virgulas OBS: tem um pequeno detalhe ai que vou deixar voce descobrir... procedure TForm1.Button1Click(Sender: TObject); var x : integer; s,Texto : string; Porta, Host, Username, Password : string; begin for x := 0 to Memo1.Lines.Count do begin s := memo1.lines.Strings[x]; while Pos(';', S) > 0 do begin Texto := copy(S,1,Pos(';', S)); delete(s,1,length(trim(Texto))); case x of 0: Porta := Texto; 1: Host := Texto; 2: Username := Texto; 3: Password := Texto; end; showmessage(Texto); end; end; end; depois voce passa para o codigo esses valores for i := 1 to 10 do // Limitar em 10 emails por Host begin // Configuração do SMTP IdSMTP.IOHandler := IdSSLIOHandlerSocket; IdSMTP.AuthenticationType := atLogin; IdSMTP.Port := Porta IdSMTP.Host := Host; IdSMTP.Username := Username; IdSMTP.Password := Password; end; ao finalizar o envio de 10 emails para o mesmo Host , voce pega o proximo valor configurado no Memo e repete o processo unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var // objetos necessários para o funcionamento IdSSLIOHandlerSocket: TIdSSLIOHandlerSocket; IdSMTP: TIdSMTP; IdMessage: TIdMessage; CaminhoAnexo: string; cont,i,j,k : integer; Porta, Host, Username, Password : string; begin cont := 0; for i := 1 to Memo1.Lines.Count do begin // instanciação dos objetos IdSSLIOHandlerSocket := TIdSSLIOHandlerSocket.Create(Self); IdSMTP := TIdSMTP.Create(Self); IdMessage := TIdMessage.Create(Self); try // Configuração do SSL IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23; IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient; for i := 1 to 10 do // Limitar em 10 emails por Host begin // Configuração do SMTP IdSMTP.IOHandler := IdSSLIOHandlerSocket; IdSMTP.AuthenticationType := atLogin; IdSMTP.Port := Porta IdSMTP.Host := Host; IdSMTP.Username := Username; IdSMTP.Password := Password; end; // Tentativa de conexão e autenticação try IdSMTP.Connect; IdSMTP.Authenticate; except on E:Exception do begin MessageDlg('Erro na conexão e/ou autenticação: ' + E.Message, mtWarning, [mbOK], 0); Exit; end; end; // Configuração da mensagem IdMessage.From.Address := 'meu.email@gmail.com'; IdMessage.From.Name := 'Meu Nome'; IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address; IdMessage.Recipients.EMailAddresses := Memo1.lines.String[i]; IdMessage.Subject := 'Assunto do e-mail'; IdMessage.Body.Text := 'Corpo do e-mail'; // Anexo da mensagem (opcional) CaminhoAnexo := 'C:\Anexo.txt'; if FileExists(CaminhoAnexo) then TIdAttachment.Create(IdMessage.MessageParts, CaminhoAnexo); // Envio da mensagem try cont := cont + 1; IdSMTP.Send(IdMessage); MessageDlg('Mensagem enviada com sucesso.', mtInformation, [mbOK], 0); MessageDlg(inttostr(cont) + ' Enviado por ' + IdMessage.From.Name + ' para ' + Memo1.lines.String[i], mtInformation, [mbOK], 0); except On E:Exception do MessageDlg('Erro ao enviar a mensagem: ' + E.Message, mtWarning, [mbOK], 0); end; finally // liberação dos objetos da memória FreeAndNil(IdMessage); FreeAndNil(IdSSLIOHandlerSocket); FreeAndNil(IdSMTP); end; end; sleep(3000); // espera 3 segundos end; // finaliza o For end; end. as alterações no seu código ficam por sua conta... mas preste atenção a lógica de programação abraço
  2. veja nesse link http://www.freedom.org.br/freedomerp-website/faces/resources/pdf/layout_cobranca_port%281%29.pdf abraço
  3. não testei ... mas faça as correções se precisar unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var // objetos necessários para o funcionamento IdSSLIOHandlerSocket: TIdSSLIOHandlerSocket; IdSMTP: TIdSMTP; IdMessage: TIdMessage; CaminhoAnexo: string; cont,i : integer; begin cont := 0; for i := 1 to Memo1.Lines.Count do begin // instanciação dos objetos IdSSLIOHandlerSocket := TIdSSLIOHandlerSocket.Create(Self); IdSMTP := TIdSMTP.Create(Self); IdMessage := TIdMessage.Create(Self); try // Configuração do SSL IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23; IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient; // Configuração do SMTP IdSMTP.IOHandler := IdSSLIOHandlerSocket; IdSMTP.AuthenticationType := atLogin; IdSMTP.Port := 465; IdSMTP.Host := 'smtp.gmail.com'; IdSMTP.Username := 'usuario'; IdSMTP.Password := 'senha'; // Tentativa de conexão e autenticação try IdSMTP.Connect; IdSMTP.Authenticate; except on E:Exception do begin MessageDlg('Erro na conexão e/ou autenticação: ' + E.Message, mtWarning, [mbOK], 0); Exit; end; end; // Configuração da mensagem IdMessage.From.Address := 'meu.email@gmail.com'; IdMessage.From.Name := 'Meu Nome'; IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address; IdMessage.Recipients.EMailAddresses := Memo1.lines.String[i]; IdMessage.Subject := 'Assunto do e-mail'; IdMessage.Body.Text := 'Corpo do e-mail'; // Anexo da mensagem (opcional) CaminhoAnexo := 'C:\Anexo.txt'; if FileExists(CaminhoAnexo) then TIdAttachment.Create(IdMessage.MessageParts, CaminhoAnexo); // Envio da mensagem try cont := cont + 1; IdSMTP.Send(IdMessage); MessageDlg('Mensagem enviada com sucesso.', mtInformation, [mbOK], 0); MessageDlg(inttostr(cont) + ' Enviado por ' + IdMessage.From.Name + ' para ' + Memo1.lines.String[i], mtInformation, [mbOK], 0); except On E:Exception do MessageDlg('Erro ao enviar a mensagem: ' + E.Message, mtWarning, [mbOK], 0); end; finally // liberação dos objetos da memória FreeAndNil(IdMessage); FreeAndNil(IdSSLIOHandlerSocket); FreeAndNil(IdSMTP); end; end; sleep(3000); // espera 3 segundos end; // finaliza o For end; end. abraço
  4. simples ... use a variavel do comando For como contador ou crie uma variavel e incremente de 1 a cada envio ex: cont := cont + 1; abraço
  5. voce pode desabilitar o controle do componente exemplo unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, SclRView, RichView, SRVControl, SRVCheckBox, StdCtrls, RVFuncs, SclRVRuler, RVStyle; type TForm1 = class(TForm) SRichViewEdit1: TSRichViewEdit; Button1: TButton; RVStyle1: TRVStyle; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var c : TSRVCheckBox; begin c := TSRVCheckBox.Create(nil); c.Parent := SRichViewEdit1.RichViewEdit; c.Name := 'SRVCheckBox'; c.Caption := 'SRVCheckBox'; c.Color:=clWhite; SRichViewEdit1.RichViewEdit.InsertControl('teste', c, rvvaMiddle); end; procedure TForm1.Button2Click(Sender: TObject); var iNbItem, INbControl: Integer; begin for iNbItem := 0 to RVStyle1.TextStyles.Count - 1 do begin SRichViewEdit1.RichViewEdit.Style.TextStyles.Items[iNbItem].Protection := [rvprStyleProtect, rvprStyleSplitProtect, rvprModifyProtect, rvprDeleteProtect, rvprConcateProtect, rvprRVFInsertProtect, rvprDoNotAutoSwitch, rvprParaStartProtect, rvprSticking, rvprSticking2, rvprSticking3, rvprStickToTop, rvprStickToBottom]; end; for iNbControl := 0 to SRichViewEdit1.RichViewEdit.ControlCount - 1 do begin SRichViewEdit1.RichViewEdit.Controls[iNbControl].Enabled := False; end; end; end. abraço
  6. use o comando Sleep(3000); // espera 3 segundos use um memo para colocar os emails e faça um loop ( comando For ou While ) usando o sleep no seu código vai ficar do jeito que voce esta querendo abraço
  7. use voce pode usar o comando Sleep(3000); // espera 3 segundos entretanto voce pode enviar para mais de um email usando ponto e virgulas entre os emails exemplo IdMessage.Recipients.EMailAddresses := 'destinatario1@email.com; destinatario2@email.com; destinatario3@email.com' ; abraço
  8. Não tenho certeza, mas tente SRichViewEdit1.RichViewEdit.InsertItem http://www.richedit.com/forums/viewtopic.php?p=17761 abraço
  9. tente MdiChild.BringToFront(); MdiChild.Focus(); abraço
  10. acho que voce teria que testar o pressionamento de teclas unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) ComboBox1: TComboBox; CheckBox1: TCheckBox; Edit1: TEdit; BitBtn1: TBitBtn; Edit2: TEdit; procedure CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CheckBox1Exit(Sender: TObject); procedure CheckBox1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function tbKeyIsDown(const Key: integer): boolean; begin Result := GetKeyState(Key) and 128 > 0; end; procedure TForm1.CheckBox1KeyPress(Sender: TObject; var Key: Char); begin showmessage('passou 1'); end; procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin showmessage('passou 2'); case key of vk_up: edit2.SetFocus; vk_return: Edit1.SetFocus; vk_escape: begin BitBtn1.SetFocus; BitBtn1.Click; end; end; end; procedure TForm1.CheckBox1Exit(Sender: TObject); begin if tbKeyIsDown(VK_UP) then showmessage('tecla seta para cima pressionada') else showmessage('passou 3'); end; end. abraço
  11. exemplo procedure TForm1.Button1Click(Sender: TObject); var ItemNo, Offs: Integer; begin SRichViewEdit.RichViewEdit.BeginUpdate; try ItemNo:=0; Offs:=SRichViewEdit.RichViewEdit.GetOffsBeforeItem(ItemNo); SRichViewEdit.RichViewEdit.SetSelectionBounds(ItemNo,Offs,ItemNo,Offs); while SRichViewEdit.RichViewEdit.SearchText('AAA', [rvseoDown]) do SRichViewEdit.RichViewEdit.InsertText('QQQ'); finally SRichViewEdit.RichViewEdit.EndUpdate; end; end; abraço
  12. achei que voce ia perceber o motivo no evento OnChange não pode ser usado unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin memo1.Lines.Delete(0); memo1.Lines.Delete(memo1.Lines.Count-1); end; end. abraço
  13. Jhonas

    OLE DB Provider for DB2

    veja http://msdn.microsoft.com/en-us/library/bb545450.aspx abraço
  14. como deletar somente a primeira e última linha do Memo? exemplo procedure TfrmDebitoConta.mmListaChange(Sender: TObject); begin mmLista.Lines.Delete(0); mmLista.Lines.Delete(mmLista.Lines.Count-1); end; abraço
  15. Jhonas

    Ray Casting

    tutorial http://www.permadi.com/tutorial/raycast/ http://lodev.org/cgtutor/raycasting2.html https://dev.opera.com/articles/3d-games-with-canvas-and-raycasting-part-1/ http://web.cs.wpi.edu/~matt/courses/cs563/talks/powwie/p1/ray-cast.htm abraço
  16. imagine que voce faz um select distinct para selecionar um unico campo da tabela ( é o que o DBLookupComboBox faz ) voce entendeu o help do delphi para uso desse componente ? dbBancoNome.KeyValue; use o break point ( debugger ) do delphi para saber qual é o valor da chave dentro de um loop o valor do DBLookupComboBox vai ser sempre o mesmo se voce não não fizer o ponteiro do registro da tabela andar
  17. exemplos http://www.linhadecodigo.com.br/artigo/3/desvendando-web-services-soap_xml.aspx http://stackoverflow.com/questions/25166011/is-it-possible-to-send-and-receive-xml-to-wsdl-function-using-delphi abraço
  18. //qryUpDate.ParamByName('p_I_COD_B_CONTA_CORRENTE_DEBIT_C').AsInteger := dbBancoNome.KeyValue; ( não estou conseguindo tratar esse campo) tente assim qryUpDate.ParamByName('p_I_COD_B_CONTA_CORRENTE_DEBIT_C').AsString := dbBancoNome.KeyValue; não estou conseguindo fazer gravar esse DBLookupComboBox no banco, uses as propriedades DataField e DataSource para gravar o conteudo do DBLookupComboBox em outra tabela help do delphi Use TDBLookupComboBox para fornecer ao usuário uma lista drop-down conveniente de itens de pesquisa para o preenchimento de campos que requerem dados de outro conjunto de dados. Se TDBLookupComboBox está ligada a um componente de campo de pesquisa, ele lê automaticamente a relação entre o valor do campo e os valores de pesquisa no conjunto de dados de pesquisa a partir do componente de campo. A relação entre os valores de campo e os valores correspondentes no conjunto de dados de pesquisa também podem ser explicitamente definidas usando as propriedades de caixa de combinação de pesquisa quando a caixa de combinação não está ligado a um componente de campo de pesquisa. abraço
  19. veja se esse post te ajuda https://www.scriptbrasil.com.br/forum/topic/176276-webbrowser-auto-preenchimento-de-pagina-da-web-bol/ qual é o endereço da pagina que voce quer fazer isso ?
  20. isso depende da velocidade da rede ou da internet ... vale a pena fazer um teste ( tente gerar um relatorio no cliente e veja quanto tempo leva ) abraço
  21. Jhonas

    Dúvida em Delphi

    mudou ? não é mais um Memo ? se voce tem duvidas simples como essa, sugiro ler programação basica em delphi no forum tem bastante material didatico https://www.scriptbrasil.com.br/codigos/delphi/ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s: string; Caracter: Char; begin s := edit1.Text; // vamos obter o primeiro caracter Caracter:= s[1]; // vamos exibir o resultado ShowMessage('O primeiro caracter é: ' + Caracter); end; end. abraço
  22. já tentou gerar o relatorio no proprio cliente ? abraço
  23. Jhonas

    Dúvida em Delphi

    coloque os numeros no memo depois faça isso unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text := memo1.lines.Strings[0]; // pegar a 1ª linha do memo end; end. memo1.lines.Strings[0] o indice é que vai pegar o valor da linha do memo abraço
×
×
  • Criar Novo...