Vou fazer aqui, obrigado a todos.
----- Original Message ----- From: Rafael Jorge To: delphi-br@yahoogrupos.com.br Sent: Monday, October 26, 2009 6:38 PM Subject: Re: [delphi-br] Detalhe do processo em tempo real cara um simples Application.ProcessMessages na tua rotina vai evitar do form icar branco e travado. so isso. ai tu pode escrever nos labels e o usuario vai ver tudo. t+ 2009/10/26 Marcelo Luiz Onhate <marc...@systempro.com.br> > > > Não consigo enviar arquivo... > então segue o código direto mesmo... aheuaheua > > Tenta usar esta classe que fiz para exibir mensagens durante processos > longos... > > > {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; > > > -- _________________________ Rafael jorge alves Desenvolvedor/analista Ativa Soluções em TI. Recife - PE [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]