Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
DarkProgrammer Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 11 de Setembro de 2012 Mensagens: 33
|
Enviada: Qua Jan 29, 2014 9:52 am Assunto: Delphi Progressbar + Imagem |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
AndersonWorkInfo Aprendiz
![Aprendiz Aprendiz](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star2.gif)
![](images/avatars/537368705689472356009.png)
Registrado: Segunda-Feira, 14 de Outubro de 2013 Mensagens: 222 Localização: Belém - Pará
|
Enviada: Qua Jan 29, 2014 12:22 pm Assunto: Re: Delphi Progressbar + Imagem |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
DarkProgrammer Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 11 de Setembro de 2012 Mensagens: 33
|
Enviada: Qui Jan 30, 2014 11:13 am Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
alanporto Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 4 de Julho de 2013 Mensagens: 4
|
Enviada: Qui Jan 30, 2014 1:02 pm Assunto: |
|
|
tenta dar imagem1.Repaint a cada mudança de largura |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
strak2012 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
![](images/avatars/2276652e81dfb2e401.jpg)
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Jan 30, 2014 1:34 pm Assunto: |
|
|
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
![](http://4image.kgngames.com/img/121391099035.jpg) |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
strak2012 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
![](images/avatars/2276652e81dfb2e401.jpg)
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Jan 30, 2014 1:41 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
cetics Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 8 de Novembro de 2011 Mensagens: 40
|
Enviada: Qui Jan 30, 2014 1:47 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
DarkProgrammer Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 11 de Setembro de 2012 Mensagens: 33
|
Enviada: Qui Jan 30, 2014 3:27 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
strak2012 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
![](images/avatars/2276652e81dfb2e401.jpg)
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Jan 30, 2014 6:31 pm Assunto: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
|