ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Delphi Progressbar + Imagem

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
DarkProgrammer
Novato
Novato


Registrado: Terça-Feira, 11 de Setembro de 2012
Mensagens: 33

MensagemEnviada: Qua Jan 29, 2014 9:52 am    Assunto: Delphi Progressbar + Imagem Responder com Citação

Olá a todos, recentemente venho fazendo um projeto de auto atualização de arquivos para um jogo, porém estou tendo dificuldades em fazer uma imagem ir ficando maior de acordo com a posição de minha progress bar, ou seja quero simular uma progressbar com uma imagem.

Ja tentei.
Image.left:=Progressbar1.position;
Image.41:=Progressbar1.position;

Porém não está indo, se alguem que ja trabalhou com isso ou sabe como funciona por favor me ajude, ficarei muito grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AndersonWorkInfo
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 14 de Outubro de 2013
Mensagens: 222
Localização: Belém - Pará

MensagemEnviada: Qua Jan 29, 2014 12:22 pm    Assunto: Re: Delphi Progressbar + Imagem Responder com Citação

Amigão o left da imagem é a posição dele, se você aumentar ele vai distanciar do lado esquerdo e não crescer, você tem que implementar o Width da imagem sendo assim faça:

Coloquei no click de um botão pra você ver como fica.

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
for i := 0 to ProgressBar1.Max -1 do
begin
ProgressBar1.Position := ProgressBar1.Position+1;
Image1.Width := Image1.Width + 1;
end;
ShowMessage('O tamanho da imagem é: '+ IntToStr(Image1.Width));
end;

Espero ter ajudado.


DarkProgrammer escreveu:
Olá a todos, recentemente venho fazendo um projeto de auto atualização de arquivos para um jogo, porém estou tendo dificuldades em fazer uma imagem ir ficando maior de acordo com a posição de minha progress bar, ou seja quero simular uma progressbar com uma imagem.

Ja tentei.
Image.left:=Progressbar1.position;
Image.41:=Progressbar1.position;

Porém não está indo, se alguem que ja trabalhou com isso ou sabe como funciona por favor me ajude, ficarei muito grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário MSN Messenger
DarkProgrammer
Novato
Novato


Registrado: Terça-Feira, 11 de Setembro de 2012
Mensagens: 33

MensagemEnviada: Qui Jan 30, 2014 11:13 am    Assunto: Responder com Citação

Sim desse jeito que você falou ele vai aumentar a imagem em +1, mas não vai aumentar de acordo com a progressbar, que é oque eu quero fazer ou seja.
Tamanho da imagem = posição da progressbar.
oque eu tentei foi
imagem1.Width:= Progressbar1.position;
mas o problema é que a imagem não acompanha a progressbar.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
alanporto
Novato
Novato


Registrado: Quinta-Feira, 4 de Julho de 2013
Mensagens: 4

MensagemEnviada: Qui Jan 30, 2014 1:02 pm    Assunto: Responder com Citação

tenta dar imagem1.Repaint a cada mudança de largura
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Jan 30, 2014 1:34 pm    Assunto: Responder com Citação

Nunca trabalhei com isso, mas sei como funciona.

Com o TPanel

Coloque o TImage em um TPanel.
Na propriedade "align" do Timage coloque "alLeft".
Na proppriedade "Stretch" do Timage coloque como "true".

Desta forma agora só basta fazer contas

Se for usar com um Progressbar em %, basta assumir o Width do Tpanel como 100%

Assim a conta fica:

Código:
Image.Width:=Round((img_Panel.Width/100)*x);


Sendo X o valor que Você quer em %.

Se for usar com um Progressbar como numero máximo e atual
a mecânica continua quase a mesma desta forma a conta fica:

Código:
Image.Width:=Round((img_Panel.Width/100)*((valoratual*100)/valormaximo));



Sem o TPanel

você pode fazer tb fazer tudo sem o Tpanel para isso você já precisa ter em mente o valor máximo que a imagem pode atingir em largura.

vamos pensar que a imagem só pode atingir o máximo de 500 pixel de largura o código ficará:

Código:
Image.Width:=Round((500/100)*x);


Sendo X o valor que Você quer em %.

Se for usar com um Progressbar como numero máximo e atual
a mecânica continua quase a mesma desta forma a conta fica:

Código:
Image.Width:=Round((500/100)*((valoratual*100)/valormaximo));


meus testes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Jan 30, 2014 1:41 pm    Assunto: Responder com Citação

No caso do seu exemplo você pode fazer assim.

Código:
Image.Width:=Round((500/100)*((Progressbar1.position*100)/ProgressBar1.Max));


isso se a largura máxima para a imagem seja 500 caso contrario basta alterar o valor de 500 para o desejado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
cetics
Novato
Novato


Registrado: Terça-Feira, 8 de Novembro de 2011
Mensagens: 40

MensagemEnviada: Qui Jan 30, 2014 1:47 pm    Assunto: Responder com Citação

Tente mexer também na propriedade stretch (acho que é assim que se escreve)...

tem um codigo bem simples (aqui funcionou)
lembrando que tem que colocar como true a propriedade stretch da imagem.

Código:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Width:= image1.Width+1;
end;

end.




Também dá para fazer uma barra colorida ou com degradê usando os valores RGB, e incrementando-os para mudar de cor.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DarkProgrammer
Novato
Novato


Registrado: Terça-Feira, 11 de Setembro de 2012
Mensagens: 33

MensagemEnviada: Qui Jan 30, 2014 3:27 pm    Assunto: Responder com Citação

strak2012 escreveu:
No caso do seu exemplo você pode fazer assim.

Código:
Image.Width:=Round((500/100)*((Progressbar1.position*100)/ProgressBar1.Max));


isso se a largura máxima para a imagem seja 500 caso contrario basta alterar o valor de 500 para o desejado.

Amigo muito obrigado realmente funcionou, segua a print abaixo.

Porém uma coisa me encomodou um pouco, que foi a borda do Tpanel, por acaso tem como retirar aquelas bordas dali?
Obrigado mais uma vez.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Jan 30, 2014 6:31 pm    Assunto: Responder com Citação

você não necessita obrigatoriamente usar o tpanel, dá uma relida no post mostro duas forma uma de fazer uma com o tpanel e outra sem.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB