{Classe para exibição de Mensagens Informativas durante a execução de algum 
processo.
   Exemplo:
   var fMsg: TInfoMessage;
   begin
    fMsg:=TInfoMessage.Create(Self,'Primeira Mensagem...');
                      ou
    fMsg:=TInfoMessage.Create(Self);
    ...
    fMesg.Text:='Segunda Mensagem...';
    ...
    fMesg.Text:='Terceira Mensagem...';
    ...
    fMsg.Free;
   end;}
  type TInfoMessage = class(TObject)
  private
    FMemo: TMemo;
    FText: String;
    FForm: TForm;
    procedure setText(const Value: String);
    property Form: TForm read FForm write FForm;
    property Memo: TMemo read FMemo write FMemo;
  public
    property Text: String read FText write setText;
    destructor Destroy; override;
    constructor Create(AOwner: TComponent); overload;
    constructor Create(AOwner: TComponent; sMsg: String); overload;
  end;

################################################################################################


{ TInfoMessage }

constructor TInfoMessage.Create(AOwner: TComponent);
begin
  inherited Create;
  FForm:=TForm.Create(AOwner);
  if AOwner<>nil then
    FForm.Position:=poOwnerFormCenter
  else begin
    FForm.Position:=poScreenCenter;
  end;
  FForm.Height:=23;
  {$IFDEF MSWINDOWS}
    FForm.BorderStyle:=bsNone;
  {$ENDIF}
  {$IFDEF LINUX}
    FForm.BorderStyle:=fbsNone;
  {$ENDIF}
  FForm.BorderIcons:=[];
  Memo:=TMemo.Create(FForm);
  Memo.Parent:=FForm;
  Memo.Align:=alClient;
  Memo.Alignment:=taCenter;
  Memo.ReadOnly:=True;
  {$IFDEF MSWINDOWS}
    Memo.Color:=$00985632;
    Memo.Font.Color:=clWhite;
  {$ENDIF}
  {$IFDEF LINUX}
    Memo.Color:=$00E3E0DF;
    Memo.Font.Color:=clBlack;
  {$ENDIF}
  Memo.Font.Size:=10;
  Memo.Font.Style:=[fsBold];
  Application.ProcessMessages;
end;

constructor TInfoMessage.Create(AOwner: TComponent; sMsg: String);
begin
  Create(AOwner);
  Text:=sMsg;
end;

destructor TInfoMessage.Destroy;
begin
  if (Self<>nil)then
  begin
    if(Assigned(FForm))and(FForm.Showing)then
    begin
      FForm.Close;
      Application.ProcessMessages;
    end;
    if(Assigned(FMemo))then FreeAndNil(FMemo);
    if(Assigned(FForm))then FreeAndNil(FForm);
  end;
  inherited;
end;

procedure TInfoMessage.setText(const Value: String);
var iLen: Integer;
begin
  FText := StringReplace(StringReplace(Value,#13,'',[]),#10,'',[]);
  iLen:=Length(FText);
  Memo.Lines.Clear;
  Memo.Lines.Add(FText);
  FForm.Width:=iLen*8;
  if FForm.Owner<>nil then
    FForm.Position:=poOwnerFormCenter
  else begin
    FForm.Position:=poScreenCenter;
  end;
  if FText<>'' then
    FForm.Show
  else if FForm.Showing then begin
    FForm.Close;
  end;
  Application.ProcessMessages;
end;

[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    delphi-br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a