Alerta Pop up com Query
Tenho uma aplicação que trás valores com essa query quando é definido no botão
e gostaria de que fosse exibido um alerta nesse formulário que tá com esse codigo,
quando houvesse um novo lançamento na query , que nesse caso ficaria rodando com algum intervalo para monitorar um novo registro que não estivesse carregado no grid
tem como ?/
[img]http://i66.tinypic.com/2m64fuw.jpg[/img]
begin
With dmmonitora.querypedidos do
begin
SQL.Clear;
SQL.Add('with CTE_Sum as (SELECT CODIGO, sum(QUANTIDADE * CUSTO_LIQUIDO) as total_liquido ');
SQL.Add('from ITENS_PED1 group by CODIGO ) ');
SQL.Add(' SELECT i.CODIGO, i.VENDEDOR_NOME, i.CLI_NOME,i.TOTAL,i.DATA, e.total_liquido');
SQL.Add(' from PEDIDOS_ORCAMENTOS i INNER JOIN CTE_Sum e ON i.codigo = e.CODIGO ');
SQL.Add(' where i.Data >= ');
SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd', DateTimePicker1.Date)) + ' and i.DATA <= ');
SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd', DateTimePicker2.Date)));
//ShowMessage(SQL.Text);
Open;
end;
end;e gostaria de que fosse exibido um alerta nesse formulário que tá com esse codigo,
var
I: Integer;
fAlertaMsn: TForm;
BarraIniciar: HWND; {Barra Iniciar}
tmAltura: Integer;
tmRect: TRect;
xTop : Integer;
xIniTop : Integer;
begin
//localiza o Handle da janela iniciar
BarraIniciar := FindWindow('Shell_TrayWnd', nil);
//Pega o "retângulo" que envolve a barra e sua altura
GetWindowRect(BarraIniciar, tmRect);
tmAltura := tmRect.Bottom - tmRect.Top;
fAlertaMsn := TFormAlerta.Create(Self);
with fAlertaMsn do
begin
Left := Screen.Width - ClientWidth;
if tmRect.Top = -2 then
tmAltura := 3000;
//Pega o top final
xTop := Screen.Height - ClientHeight - tmAltura;
//Pega o top inicial
xIniTop := Screen.Height + ClientHeight + tmAltura;
Top := xIniTop;
for I := xIniTop downto xTop do
begin
Top := Top - 1;
Show;
Update;
Application.ProcessMessages;
Sleep(10);
end;
Sleep(4000); //tempo de exibição na tela
Close;
FreeAndNil(fAlertaMsn);
end;
end;
quando houvesse um novo lançamento na query , que nesse caso ficaria rodando com algum intervalo para monitorar um novo registro que não estivesse carregado no grid
tem como ?/
[img]http://i66.tinypic.com/2m64fuw.jpg[/img]
Valmir Inacio
Curtidas 0
Respostas
Rodrigo Oliveira
29/01/2016
Não sei quase nada de Delphi com dev web, mas olhe: [url]http://www.ferramentasblog.com/2009/01/mensagem-alerta-pop-up.html[/url]
GOSTEI 0
Valmir Inacio
29/01/2016
Rodrigo agradeço mas não é isso que procuro, eu ja tenho a janela pop rodando, a questão é fazer uma rotina que faça com que toda vez que haja um lançamento no banco de dados o operador saiba com as informações aparecendo na janela pop up com os valores conforme mostrei que na imagem de um form que tem os DBedits.
GOSTEI 0
Raimundo Pereira
29/01/2016
Bom dia, você pode por um timer ou triger.
De x em x tempo que pode ser definido em uma tabela de parâmetros ou arquivo ini.
Dá um refresh na tabela e verificando uma flag tipo "Pedido_Finalizado=N".
Se os registros forem >0 avisa tem x pedidos pedentes,
o ideal seria ter um grid para escolher qual pedido acessar.
É só uma ideia.
De x em x tempo que pode ser definido em uma tabela de parâmetros ou arquivo ini.
Dá um refresh na tabela e verificando uma flag tipo "Pedido_Finalizado=N".
Se os registros forem >0 avisa tem x pedidos pedentes,
o ideal seria ter um grid para escolher qual pedido acessar.
É só uma ideia.
GOSTEI 0
Valmir Inacio
29/01/2016
P2 quando voce fala ter um grid pra acessar , não entendi bem pois eu ja tenho um ue lista os pedidos
GOSTEI 0
Raimundo Pereira
29/01/2016
Como funciona sua logística.
Quais os procedimentos ?
Setor [Vendas] - Realizando pedidos.
Setor [Financeiro]- Realizando Vendas dos pedidos.
Setor [Estoque]- Aguardando finalização da venda, realiza expedição dos produtos e entrega para o cliente.?
Preciso de mais detalhes do funcionamento da logística utilizada para então sugerir algo mais preciso.
Quais os procedimentos ?
Setor [Vendas] - Realizando pedidos.
Setor [Financeiro]- Realizando Vendas dos pedidos.
Setor [Estoque]- Aguardando finalização da venda, realiza expedição dos produtos e entrega para o cliente.?
Preciso de mais detalhes do funcionamento da logística utilizada para então sugerir algo mais preciso.
GOSTEI 0
Valmir Inacio
29/01/2016
o Setor de Vendas emite um novo pedido que é armazenado no banco na tabela PEDIDOS_ORCAMENTOS, eu melhorei o select do código depois da sua ajuda , pois pensei que já que vai disparar atras de algum novo evento tem a tabela o campo "i.hora" que pode fazer esse filtro , já que vc havia sugerido "Pedido_Finalizado=N".
o codigo ficou assim:
o codigo ficou assim:
begin
With dmmonitora.querypedidos do
begin
SQL.Clear;
SQL.Add(' with CTE_Sum as (SELECT CODIGO, sum(QUANTIDADE * CUSTO_LIQUIDO) as total_liquido ');
SQL.Add(' from ITENS_PED1 group by CODIGO ) ');
SQL.Add(' SELECT i.CODIGO, i.VENDEDOR_NOME,i.hora, i.CLI_NOME,i.TOTAL,i.DATA,i.cliente,i.vendedor,j.nome,l.nome, e.total_liquido');
SQL.Add(' from PEDIDOS_ORCAMENTOS i INNER JOIN CTE_Sum e ON i.codigo = e.CODIGO ');
SQL.Add(' LEFT JOIN clientes j ON (i.cliente= j.cliente_id) LEFT JOIN vendedores l ON (i.vendedor =l.codigo) ');
SQL.Add(' where i.Data >= ');
SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd', DateTimePicker1.Date)) + ' and i.DATA <= ');
SQL.Add(QuotedStr(FormatDateTime('yyyy/mm/dd', DateTimePicker2.Date)));GOSTEI 0
Valmir Inacio
29/01/2016
alguem poderia me ajudar??
GOSTEI 0
Alexandre Santos
29/01/2016
Saudações... Bom se eu entendi bem.... você cria um botão e testa a chamado do form que vai aparecer como popup...
No botão você implementa no envento OnClik este código que vc postou acima.... se funcionar exibindo o seu form é só você adaptar ao que deseja....
Se observar o procedimento do botão é implementado como do tipo "Sender" ou seja você poderia chamar o seu popup atraves de uma procedure que implementasse um Sender também...
Vou postar um exemplo do botão e depois como uma procedure
O Evento OnClik do Botão: (nao esqueça de dar uses no form que será o PoPup)
Esta procedure segue o mesmo modelo do botão que é do tipo TObject e usa o método Sender.
na implementação da procedure ExibirPoPup vc coloca o mesmo código do botão conforme o exemplo:
Então depois que você fizer a verificação em sua base basta dispara o método assim:
ExibirPoPup(Sender); // Desta forma o Sender enviará o que estiver implementado na procedure Exibir PoPup...
No botão você implementa no envento OnClik este código que vc postou acima.... se funcionar exibindo o seu form é só você adaptar ao que deseja....
Se observar o procedimento do botão é implementado como do tipo "Sender" ou seja você poderia chamar o seu popup atraves de uma procedure que implementasse um Sender também...
Vou postar um exemplo do botão e depois como uma procedure
O Evento OnClik do Botão: (nao esqueça de dar uses no form que será o PoPup)
procedure TFormPrincipal.Button1Click(Sender: TObject);
var
I: Integer;
MeuForm: TForm; //Cria a variavel do tipo TForm para ser instanciado na criação do Form
BarraIniciar: HWND; {Barra Iniciar}
tmAltura: Integer;
tmRect: TRect;
xTop: Integer;
xIniTop: Integer;
begin
//localiza o Handle da janela iniciar
BarraIniciar := FindWindow('Shell_TrayWnd', nil);
//Pega o "retângulo" que envolve a barra e sua altura
GetWindowRect(BarraIniciar, tmRect);
tmAltura := tmRect.Bottom - tmRect.Top;
MeuForm := TfrmPopUp.Create(Self); // Observe que o metodo create recebeu um form que eu ja havia preparado
with FAPopup do
begin
Left := Screen.Width - ClientWidth;
if tmRect.Top = -2 then
tmAltura := 30;
//Pega o top final
xTop := Screen.Height - ClientHeight - tmAltura;
//Pega o top inicial
xIniTop := Screen.Height + ClientHeight + tmAltura;
Top := xIniTop;
for I := xIniTop downto xTop do
begin
Top := Top - 1;
Show;
Update;
Application.ProcessMessages;
Sleep(1);
end;
Sleep(100000);
for I := xTop to xIniTop do
begin
Top := Top + 1;
Show;
Update;
Application.ProcessMessages;
Sleep(1);
end;
Close;
FreeAndNil(MeuForm);
end;
end;/code]
Então seguindo o exemplo do procedimento do botão, criei a procedure "ExibirPoPup" conforme este exemplo:
[code]
public
{ Public declarations } criei em public para poder ser chamado de qualquer outro local
procedure ExibirPoPup(Sender: TObject);
Esta procedure segue o mesmo modelo do botão que é do tipo TObject e usa o método Sender.
na implementação da procedure ExibirPoPup vc coloca o mesmo código do botão conforme o exemplo:
procedure ExibirPoPup(Sender: TObject);
var
I: Integer;
MeuForm: TForm; //Cria a variavel do tipo TForm para ser instanciado na criação do Form
BarraIniciar: HWND; {Barra Iniciar}
tmAltura: Integer;
tmRect: TRect;
xTop: Integer;
xIniTop: Integer;
begin
//localiza o Handle da janela iniciar
BarraIniciar := FindWindow('Shell_TrayWnd', nil);
//Pega o "retângulo" que envolve a barra e sua altura
GetWindowRect(BarraIniciar, tmRect);
tmAltura := tmRect.Bottom - tmRect.Top;
MeuForm := TfrmPopUp.Create(Self); // Observe que o metodo create recebeu um form que eu ja havia preparado
with FAPopup do
begin
Left := Screen.Width - ClientWidth;
if tmRect.Top = -2 then
tmAltura := 30;
//Pega o top final
xTop := Screen.Height - ClientHeight - tmAltura;
//Pega o top inicial
xIniTop := Screen.Height + ClientHeight + tmAltura;
Top := xIniTop;
for I := xIniTop downto xTop do
begin
Top := Top - 1;
Show;
Update;
Application.ProcessMessages;
Sleep(1);
end;
Sleep(100000);
for I := xTop to xIniTop do
begin
Top := Top + 1;
Show;
Update;
Application.ProcessMessages;
Sleep(1);
end;
Close;
FreeAndNil(MeuForm);
end;
Então depois que você fizer a verificação em sua base basta dispara o método assim:
ExibirPoPup(Sender); // Desta forma o Sender enviará o que estiver implementado na procedure Exibir PoPup...
GOSTEI 0