Barra de Progresso - Fórum DevMedia
Estou criando uma função para gerar alguns dados e quero colocar uma Barra de Progresso, só que a barra de progresso pode ser vários tipos e de terceiros, então não tenho como colocar uma função assim
procedure Dados(Barra: TProgressBar);
Por que nem todos funcionam.
Use o typecast
procedure Pula (barra : TObject,passo,integer);
if barra is TProgressBar then
TProgressBar(barra).StepBy(passo);
if barra is TBarraQualquer then
TBarraQualquer(barra).PulaPula(passo);
// outra barra
Como os métodos devem variar um if para cada barra, não me ocorre outra solução.
Valeu pela ajuda, mas assim não adianta, já que eu não tenho como saber qual é que o cara que for usar o componente vai colocar o progressbar
Eu pensei em fazer assim.
procedure TForm1.Dados(var Posicao: Integer);
Posicao:= 100;
E na hora de executar fazer isso
Dados(ProgressBar.Position);
Da o erro na hora de copilar [b:c4e74a450d]Constant object cannot be passed as var parameter[/b:c4e74a450d] na linha [b:c4e74a450d]Dados(ProgressBar.Position);[/b:c4e74a450d]
Tem como ver isso???
O que exatamente vc está criando ?
Como será usado ? Por outros ?
Como os métodos diferem para as Classes não vejo como fazer algo generico.
Não sei se é o caso, mas muitos componentes utilizam um evento OnProgress no qual uma das variáveis é a posição atual. O usuário pode ir lá e fazer o que quiser com esse valor (jogar no componente barra de progresso que ele utilizar).
Não sei se te ajuda, mas fora a opção dada pelo Motta, essa é a única maneira que consegui imaginar...
Estou criando um aplicativo para fazer o backup de vários tipos de banco de dados e para mostrar o processo, usar componentes para mostrar o processo, então quer dizer que o cara que for usar(instalar meu componete e for usar ele) vai colocar uma barra de progresso que eu não vou saber qual é então eu precisso que a função atualize a variável do componente(progress).
uma outra opção, mas que eu acho que você não vai querer usar, seria a de colocar uma propriedade ProgressBar no componente... O problema é que dessa maneira você vai restringir somente a esse componente...
Dê uma olhada na biblioteca RxLib, se não me engano tem uma função que tem uma proposta semelhante, talvez possa ajudar a montar a sua.
Criei um Event OnBackupProgresso
Nesse evento coloquei a posição, ai o cara que for usar pega a posicao e manda para o seu componente;