Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Estou desenvolvendo um sistema que precisa ser aberto um formulário fsMDIChild assim que chegar algum registro no banco de dados.
1- Fiz uma verificação se a quantidade de registros na tabela é diferente de zero
2- Fiz um laço FOR varrer todo a tabela.
3- Verifico se a quantidade de Forms MDIChild criados é menor que a quantidade de registros localizado na tabela
4- Verifico se a quantidade de forms criado é maior que 1, se for eu crio o formulário, dou um next na query da tabela e crio o formulário passando os parâmetros para o mesmo, se não crio o formulário passando os parâmetros (primeiro registro 1 formulário).
Funciona lindamente, desde que todos sejam criados de uma única vez, se os formulários estiverem abertos e chegar um novo registro, o formulário é criado, mas é passado os dados do primeiro registro na tabela.
Tentei colocar o ID de cada registro no caption do formulário e usar um laço for para percorrer as janelas MDIs e comparar com os IDs do banco e só fazer os que não estiverem abertos, mas não rolou.
Tentei criando um array também, onde cada ID da tabela era armazenado no array e feito uma pesquisa e se não tiver no array cria o formulário, mas não deu.
Alguém já precisou fazer ago assim ou tem alguma dica que possa me ajudar?
O codigo abaixo está dentro de um Timer, se alguém conhecer outra forma seria interessante.
if( QueryEventos.RecordCount <> 0) then
begin
for i := 0 to QueryEventos.RecordCount - 1 do
begin
if (MDIChildCount <QueryEventos> 0)then
begin
Application.CreateForm(TFormEventos,FormEventos);
FormEventos.Caption := IntToStr(QueryEventos.FieldValues['id']);
FormEventos.Show;
QueryEventos.Next;
end//if(MDIChildCount > 1)then
else
begin
Application.CreateForm(TFormEventos,FormEventos);
FormEventos.Caption := IntToStr(QueryEventos.FieldValues['id']);
FormEventos.Show;
QueryEventos.Next;
end;//FIM ELSE - if(MDIChildCount > 1)then
end;//FIM if (MDIChildCount < QueryEventos.RecordCount) then
end;// FIM for i := 0 to QueryEventos.RecordCount - 1 do
end;// FIM if( QueryEventos.RecordCount <> 0) thenCarregando comentários...