Boa dica Alvaro, sem desmerecer as demais! 

Fiquei pensando aqui enquanto o pessoal mandava as dicas e fiz dessa forma:

Criei um form com a mensagem e um TProgressBar e um Timer.
Com os códigos no Timer e no FormShow:

procedure TfrmMsgProcesso.TempoTimer(Sender: TObject);
begin
   prbProcesso.StepIt;
   if prbProcesso.Step = prbProcesso.Max then
      prbProcesso.Step := 10;
end;

procedure TfrmMsgProcesso.FormShow(Sender: TObject);
begin
   Top  := 90;                                                     // Para 
ficar no alto da tela
   Left := Trunc((Screen.Width/2) - (Width/2));  // Para ficar no centro da tela
end;

Criei duas funções numa UNIT geral do sistema e quando preciso da tela chamo 
elas:

procedure MostraTelaMsgProcesso;
begin
   Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso);
   frmMsgProcesso.Show;
   frmMsgProcesso.BringToFront;
end;

procedure FechaTelaMsgProcesso;
begin
   frmMsgProcesso.Close;
   frmMsgProcesso.Destroy;
end;



  ----- Original Message ----- 
  From: Alvaro 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Friday, November 24, 2006 12:17 PM
  Subject: Re: [delphi-br] Tela aguardando processo


  Cara eu fiz o seguite criei uma funcao onde vc passa o form e a mensagem
  como parametro ae é criado um Panel no centro do Form!

  utilize da seuinte forma:

  try
  Aguarde(Formulario,'Mensagem');
  Rotinas;
  finnaly
  FimAguarde(Formulario);
  end;

  segue abaixo as funções:

  procedure Aguarde(Formulario: TForm; Mensagem: string = '');
  var
  pngAguarde: TPanel;
  begin
  FimAguarde(Formulario);
  Mensagem := Mensagem + ' ...';
  Screen.Cursor := crSQLWait;
  pngAguarde := TPanel.Create(Formulario);
  with pngAguarde do
  begin
  Width := Length(Mensagem) * 9;
  Left := (Formulario.Width - Width) div 2;
  Top := (Formulario.Height - Height) div 2;
  Name := 'pngAguarde';
  Parent := formulario;
  Caption := Mensagem;
  Height := 59;
  BorderStyle := bsSingle;
  Color := $00DEDCBE;
  Color := clSkyBlue;
  Font.Charset := DEFAULT_CHARSET;
  Font.Color := clWindowText;
  Font.Height := -11;
  Font.Name := 'Tahoma';
  Font.Size := 10;
  Font.Style := [fsBold];
  ParentFont := False;
  ParentColor := False;
  ParentBackground := False;
  Application.ProcessMessages;
  end;
  end;

  procedure FimAguarde(Formulario: TForm);
  var
  I: Integer;
  begin
  if Formulario = nil then
  Exit;
  try
  Application.ProcessMessages;
  for i := 0 to formulario.ComponentCount - 1 do
  if (formulario.Components[i] is TPanel) then
  if (formulario.Components[i] as TPanel).Name = 'pngAguarde' then
  (formulario.Components[i] as TPanel).Free;
  finally
  Screen.Cursor := crDefault;
  end;
  end;

  Em 24/11/06, Leonardo Felipe de Oliveira <[EMAIL PROTECTED]>
  escreveu:
  >
  > Pessoal,
  >
  > Alguém tem um exemplo ou algum fonte que tenha uma tela de aguardando um
  > processo que sendo feito?
  > Enquanto alguns SQL e procedimentos do banco estão sendo efetuados quero
  > deixar para o usuário uma tela com a mensagem: 'AGUARDE! PROCESSO EM
  > ANDAMENTO' e com aqueles pontilhados q ficam se mexendo enquanto o processo
  > não foi concluído.
  >
  > Abraços,
  > Leonardo
  >
  > [As partes desta mensagem que não continham texto foram removidas]
  >
  > 
  >

  -- 

  Att.,
  Alvaro Esteves Alves
  Analista de Sistemas
  55 11 8214-7819
  [EMAIL PROTECTED]

  The information contained in this message and in the attached
  files are restricted, and its confidentiality protected by law. In case you
  are not the addressee, be aware that the reading, spreading and copy of this
  message is unauthorized. Please, delete this message and notify the sender.
  The improper use of this information will be treated according the company's
  internal rules and legal laws.

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



   


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


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.5.430 / Virus Database: 268.14.14/547 - Release Date: 22/11/2006 
17:41


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

Responder a