Total de registros no título do form

Delphi

30/08/2014

Olá pessoal!

Tenho um form de consulta de produtos e sempre que eu executo uma consulta ou um filtro, logo após mando rodar uma procedure para calcular o total de registros retornado e jogar o resultado no título do form (form.caption).
O problema é que não está aparecendo. Só aparece/atualiza quando eu utilizo o Alt+Tab.
Alguém conhece um jeito disso funcionar?
Segue abaixo a procedure:

procedure TFrm_CstProduto.TotalRegistros;
begin
  if pnlFormula.Visible then
    Frm_CstProduto.Caption := 'Consultar Produtos   .:.   Total Registros: ' + IntToStr(dm.qryProF7.RecordCount)
  else
    Frm_CstProduto.Caption := 'Consultar Produtos   .:.   Total Registros: ' + IntToStr(dm.qryProduto.RecordCount);

  Frm_CstProduto.Update;  
end;


Agradeço desde já qualquer ajuda...
Vagner Almeida

Vagner Almeida

Curtidas 0

Respostas

Alisson Santos

Alisson Santos

30/08/2014

Em qual evento executando essa procedure.
O correto é executar essa procedure no onShow pois quando ele for abrir o form ele já executa e traz as informações.
GOSTEI 0
Vagner Almeida

Vagner Almeida

30/08/2014

sempre que eu executo uma consulta ou um filtro
GOSTEI 0
Marcos Saffran

Marcos Saffran

30/08/2014

Bom dia Vagner,

você já tentou o "application.ProcessMessages" ?
GOSTEI 0
Vagner Almeida

Vagner Almeida

30/08/2014

Não. Poderia me dar um exemplo de como utilizar?
GOSTEI 0
Marcos Saffran

Marcos Saffran

30/08/2014

procedure TFrm_CstProduto.TotalRegistros;
begin
  if pnlFormula.Visible then
    Frm_CstProduto.Caption := 'Consultar Produtos   .:.   Total Registros: ' + IntToStr(dm.qryProF7.RecordCount)
  else
    Frm_CstProduto.Caption := 'Consultar Produtos   .:.   Total Registros: ' + IntToStr(dm.qryProduto.RecordCount);

  Frm_CstProduto.Update;  

 Application.ProcessMessages;

end;
GOSTEI 0
Vagner Almeida

Vagner Almeida

30/08/2014

Fiz o teste, mas não funcionou :(

Será que não funciona colocando essa informação no título do form?

Acho que vou ter que colocar outro componente como por exemplo TEdit ou TLabel.
GOSTEI 0
Alisson Santos

Alisson Santos

30/08/2014

tenteou executar como disse.
Disparar a ação quando abrir ou criar um form?
pois fis uns testes aqui e funcionou quando criei.
GOSTEI 0
Vagner Almeida

Vagner Almeida

30/08/2014

O meu form de consulta só apresenta registros quando é realizado uma consulta ou filtro (o filtro dispara uma consulta automaticamente) então não faz sentido eu colocar uma informação no onshow, oncriate ou onactive do form porque irá me trazer "Consultar Produtos .:. Total Registros: 0".

O problema é que após feito uma consulta eu executo a procedure "TotalRegistros;" para ser mostrado no caption do form, mas só aparece quando eu utilizo o alt+tab. Ou seja, é preciso retirar o foco do form para depois focá-lo/ativa-lo novamente para apresentar a mensagem.
GOSTEI 0
Alisson Santos

Alisson Santos

30/08/2014

entendi, na verdade o seu for não recebeu a atualização, quando você sai de um campo ai ele atualiza.
Já tentou depois de feito ação dar um refresh no formulário. Procure por algo desse gênero,
GOSTEI 0
Vagner Almeida

Vagner Almeida

30/08/2014

Já tentei dando um Update, Application.ProcessMessages e nada.
Vou colocar essa informação em outro local mesmo.

Obrigado à todos pela atenção.
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

30/08/2014

colega só fazer isto que funciona...


begin

if pnlFormula.Visible then
Frm_CstProduto.Caption := 'Consultar Produtos .:. Total Registros: ' + IntToStr(dm.qryProF7.RecordCount)
else
Frm_CstProduto.Caption := 'Consultar Produtos .:. Total Registros: ' + IntToStr(dm.qryProduto.RecordCount);

Application.ProcessMessages;

end;
GOSTEI 0
POSTAR