Array
(
)

Barra de Progresso

Rudá
   - 09 fev 2006

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.

Como faço para resolver isso??


Motta
   - 09 fev 2006

Use o typecast

algo assim


#Código




procedure Pula (barra : TObject,passo,integer);
begin
if barra is TProgressBar then
TProgressBar(barra).StepBy(passo);
if barra is TBarraQualquer then
TBarraQualquer(barra).PulaPula(passo);
// outra barra
end;



Como os métodos devem variar um if para cada barra, não me ocorre outra solução.


Rudá
   - 09 fev 2006

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);
begin
Posicao:= 100;
end;

E na hora de executar fazer isso

procedure TForm1.Button1Click(Sender: TObject);
begin
Dados(ProgressBar.Position);
end;

Da o erro na hora de copilar Constant object cannot be passed as var parameter na linha Dados(ProgressBar.Position);

Tem como ver isso???


Motta
   - 10 fev 2006

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.


Delphi32
   - 10 fev 2006

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...

t+!


Rudá
   - 10 fev 2006

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).


Delphi32
   - 10 fev 2006

Lembrei outra...

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...

t+!


Gandalf.nho
   - 10 fev 2006

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.


Rudá
   - 10 fev 2006

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;

Valeu pela ajuda pessoa.