Fórum Progressbar ou animate no select que funcione como? #344382
10/08/2007
0
Pessoal, tem como fazer um progressbar em um select? (O que eu acho impossivel ateh o processo terminar, mais tai a duvida, talvez tenha como fazer) :D
Tenho um select que quando executo demora muito, ai resolvi usar um amimate (Paleta win32), mais tambem nao esta funcionando de acordo, ele fica parado ateh o processo terminar pra depois ativar.
Bom a unit do Animate fiz assim
E estou chamando no select assim
Agora um progressbar sem ser num while nao sei se tem como fazer, [u:a725ac31cd]como ja citei antes[/u:a725ac31cd], ou fazer com que este animate funcione realmente, pelo menos para o usuario nao ficar perdido em quanto processa os dados.
Tenho um select que quando executo demora muito, ai resolvi usar um amimate (Paleta win32), mais tambem nao esta funcionando de acordo, ele fica parado ateh o processo terminar pra depois ativar.
Bom a unit do Animate fiz assim
unit uAguardeDados;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TfrAguardeDados = class(TForm)
Label1: TLabel;
Animate1: TAnimate;
private
{ Private declarations }
public
{ Public declarations }
end;
procedure AguardeDadosOn;
procedure AguardeDadosOff;
var
frAguardeDados: TfrAguardeDados;
implementation
procedure AguardeDadosOn;
begin
frAguardeDados := TfrAguardeDados.Create(Application);
frAguardeDados.Animate1.Active := true;
frAguardeDados.Show;
Application.ProcessMessages;
end;
procedure AguardeDadosOff;
begin
frAguardeDados.Close;
frAguardeDados.Free;
end;
{$R *.dfm}
end.E estou chamando no select assim
{Procedure para mostrar o select da tabela na grid com somas de outras tabelas inclusive calculo do inss}
Procedure TFSuperCalculo.ChamaSP;
begin
[b:a725ac31cd]aguardedadoson;[/b:a725ac31cd] [color=blue:a725ac31cd][i:a725ac31cd]//chamando a procedure para aguardar enquanto processa os dados[/i:a725ac31cd][/color:a725ac31cd]
dm.zspSomaFunc.Close;
dm.zspSomaFunc.sql.Clear;
dm.zspSomaFunc.sql.Text:=´ select c1.*, ´
+´ (select sum(c2.proventos) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func) TotoProv, ´
+´ (select sum(c2.descontos) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func) TotDesc, ´
+´ (select sum(c2.proventos - c2.descontos) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func) Saldo, ´
+´ (select first 1 indice from indiceinss inss where inss.ate >= ´
+´ (select sum(c2.proventos - c2.descontos) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func and c1.Inss = ´´True´´) ´
+´ order by inss.ate) Aliquota_INSS, ´
+´ (select sum(c2.proventos - c2.descontos) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func and c1.Inss = ´´True´´) * ´
+´ (select first 1 indice from indiceinss inss where inss.ate >= ´
+´ (select sum(c2.proventos - c2.descontos ) ´
+´ from essqlfunc c2 ´
+´ where c2.id_empresa = c1.id_empresa ´
+´ and c2.id_func = c1.id_func and c1.Inss = ´´True´´ ) ´
+´ order by inss.ate) / 100.00 Valor_INSS ´
+´ from essqlfunc c1 ´;
dm.zspSomaFunc.Open;
{codigo para formatar o dbgrid - tem que ter DB no uses da unit}
(dm.zspSomaFunc.fieldbyname (´salario´) as tfloatfield).displayformat := ´#,0.00´;
(dm.zspSomaFunc.fieldbyname (´salgoverno´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´proventos´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´descontos´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´TOTOPROV´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´TOTDESC´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´SALDO´) as tfloatfield).displayformat := ´#,0.00´;
(dm.zspSomaFunc.fieldbyname (´ALIQUOTA_INSS´) as tfloatfield).displayformat := ´,0.00´;
(dm.zspSomaFunc.fieldbyname (´VALOR_INSS´) as tfloatfield).displayformat := ´,0.00´;
[b:a725ac31cd]aguardedadosoff;[/b:a725ac31cd] [i:a725ac31cd]//fechando a procedure aguardadados depois de processado os dados[/i:a725ac31cd]
showmessage(´Processo Terminado´);
end;
[color=blue:a725ac31cd][/color:a725ac31cd]Agora um progressbar sem ser num while nao sei se tem como fazer, [u:a725ac31cd]como ja citei antes[/u:a725ac31cd], ou fazer com que este animate funcione realmente, pelo menos para o usuario nao ficar perdido em quanto processa os dados.
Adriano_servitec
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)