evento de objeto criado dinamicamente

21/01/2010

2

Boa noite. Como faço para utilizar a constante AsStatusText do evento OnStatus de um componente IdSmtp criado dinamicamente. Ex: Result   := False;
  LidSMTP   := TIdSMTP.Create(nil);
  while not (LidSMTP.Connected) do   // enquanto não conectar, o programa vai ficar tentando conectar infinitamente.
  begin
    try       LidSMTP.Disconnect;
      LidSMTP.Host          := host;
      LidSMTP.Port          := Fporta;
      LidSMTP.Username      := usuario;
      LidSMTP.Password      := senha;       LidSMTP.AuthType   := FTipoDeAutenticacao;
      LidSMTP.Connect;
      if not LidSMTP.Connected then
        Exit;       LIdMessage := TIdMessage.Create(nil);
      try
        LIdMessage.From.Text                   := fde;
        LIdMessage.Recipients.EMailAddresses   := fpara;
        LIdMessage.MessageParts.Clear;
        {:Foi criado para enviar a mensagem que esta na descricao}         LIdMessage.Body.Text := texto; Acessar a constante AsStatusText do evento OnStatus de "LidSMTP". Obrigado
Responder

Posts

como não dá pra acessar diretamente, crie uma variável private e atribua a ela o valor dessa outra.
então, seu evento OnStatus deverá ter uma linha acrescentada, com essa atribuição.

por exemplo:

procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: string);
begin
  cStatusText := AStatusText; // cStatusText é uma variával private
end;

depois, no seu código, use a variável cStatusText.


Result   := False;
  LidSMTP   := TIdSMTP.Create(nil);
  while not (LidSMTP.Connected) do   // enquanto não conectar, o programa vai ficar tentando conectar infinitamente.
  begin
    try       LidSMTP.Disconnect;
      LidSMTP.Host          := host;
      LidSMTP.Port          := Fporta;
      LidSMTP.Username      := usuario;
      LidSMTP.Password      := senha;       LidSMTP.AuthType   := FTipoDeAutenticacao;
      LidSMTP.Connect;
      if not LidSMTP.Connected then
        Exit;       LIdMessage := TIdMessage.Create(nil);
      try
        LIdMessage.From.Text                   := fde;
        LIdMessage.Recipients.EMailAddresses   := fpara;
        LIdMessage.MessageParts.Clear;
        {:Foi criado para enviar a mensagem que esta na descricao}         LIdMessage.Body.Text := texto;        [use a variável cStatusText]      

Responder

22/01/2010

Jean Almeida

Boa noite, obrigado pela ajuda, resolveu meu problema.
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira