segunda-feira, 23 de novembro de 2009

Colocando uma barra de progresso na inicialização do sistema

{É bem simples, trata-se de abrir por código todas as tabelas na entrada do programa, portanto deixe todas as tabelas fechadas no datamodule.}

procedure DataModule.OnCreate;
var Tabela, i: Integer;

begin
Tabela := 0;
for I := 0 to ComponentCount -1 do
if Components[I] is TTable then
with TTable(Components[I]) do
if (Tag = 9) and not Active then // Tag = 9 identifica as tabelas à serem
abertas
try
Inc(Tabela); // contador das tabelas q já foram abertas.
lblInfo.Caption := Format('Abrindo as Tabelas (%d/%d)', [Tabela, Total]);

{aqui, informo à uma label o andamento do processo, usei o formato
TotalTabelasAbertas/TotalàAbrir, pode-se trocar para porcentagem ou até usar o
ProgressBar.}

lblInfo.Refresh; // vital para atualizar a tela durante o processo.
Application.ProcessMessages;

Open;
except
Raise; // quem estiver a fim, pode-se colocar aqui uma verificação, se deu zebra
e a zebra é indice corrompido, rodar rotina de recriação de indice da tabela.
end;

Nenhum comentário:

Postar um comentário