JPeg no TImageList

Delphi

30/09/2008

Bom dia pessoal....mais uma vez recorro aos amigos do fórum....


O problema é o seguinte....eu tenho um botão que encontrei na Net chamado d ALButton...o mesmo é transparente e toma forma conforme imagem q é atribuída ao mesmo....fica parecendo botões Web....

Então...


Eu tenho uma aplicação q está sendo feita crianças....e em kda letra eu preciso d uma imagem referente a letra....

Aew começam os problemas....

Eu preciso carregar imagens JPeg o TImageList só aceita imagens .Bmp e .Ico....


Alguém conhece algum componente q aceite JPeg??


Fico no aguardo...


obrigado pessoal...


Wdrocha

Wdrocha

Curtidas 0

Respostas

Abobre

Abobre

30/09/2008

cara, eu naõ estou com o delphi aqui, mais acho que ele reconhece imagens jpeg sim, para funcionar você precisar declarar jpeg na uses do seu projeto cara. Tente fazer isso e me fala se deu certo !

Abraços


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Bom dia abobre, o Delphi aceita sim...mas no TImage....eu preciso q aceite no TImageList....


Qdo vou carregar imagens no TImageList o mesmo só carrega imagens *.Ico e *.BMP...


Já declarei a unit JPeg....e nada tbm...

Tem alguma idéia??

No aguardo...


Obrigado..


GOSTEI 0
Paullsoftware

Paullsoftware

30/09/2008

Bom dia abobre, o Delphi aceita sim...mas no TImage....eu preciso q aceite no TImageList.... Qdo vou carregar imagens no TImageList o mesmo só carrega imagens *.Ico e *.BMP... Já declarei a unit JPeg....e nada tbm... Tem alguma idéia?? No aguardo... Obrigado..
Delphi 2009 aceita até PNG da uma atualizada na sua versão :wink:


GOSTEI 0
álison Bissoli

álison Bissoli

30/09/2008

não é tão facil atualizar a versão.

por exemplo, o JEDI já saiu para o 2009, e o devexpress ainda não.
alguém tem notícia do dev pro 2009?


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Delphi 2009 aceita até PNG da uma atualizada na sua versão :wink:



Eu tow testando a versão Trial do Delphi e já tinha visto q a mesma aceita....

Como eu faço para atualizar a versão??

Tow precisando mt disso...meu trabalho só poderá continuar se eu fizer isso...


No Aguardo...


Mt obrigado a todos...


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Eu tow tentando colocar imagem nos botões do Delphi 2009, versão Trial e as mesmas não aparecem... :-(


Primeiro carrego as imagens para um ImageList e na propriedade Images do TButton associo ao TImageList...tem q fazer mais alguma coisa? :-(


GOSTEI 0
Paullsoftware

Paullsoftware

30/09/2008

[quote:84e183cc50=´Álison Bissoli´]não é tão facil atualizar a versão.

por exemplo, o JEDI já saiu para o 2009, e o devexpress ainda não.
alguém tem notícia do dev pro 2009?[/quote:84e183cc50]É, realmente quem usa componentes de terceiros fica meio complicado acompanhar as atualizações do produto!!! 8)


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

paullsoftware, vc conseguiu colocar imagem nos botões??


GOSTEI 0
Paullsoftware

Paullsoftware

30/09/2008

paullsoftware, vc conseguiu colocar imagem nos botões??
Não diretamente, mas, consegui colocar vinculando os botões as minhas ações que possuem uma lista de imagens também vinculadas.
[url=http://www.safpe.com.br/externo/jpgEmBotoes.rar]link do exemplo[/url]


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

É quase isso q eu quero...só queria q a imagem ficasse em cima e o caption do botão em baixo....

tem como??


GOSTEI 0
Paullsoftware

Paullsoftware

30/09/2008

No objector Inspector tem uma opção para mudar a posição da imagem para qualquer lugar... Left, Right, Button ou Top!

da uma olhada, espero ter ajudado! :wink:


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Bom dia PaullSoftware....vc me ajudou mt com o exemplo...


Obrigado


GOSTEI 0
Tonidavi2004

Tonidavi2004

30/09/2008

[b:81d6bc7f85]WDRocha escreveu[/b:81d6bc7f85]
Eu tenho uma aplicação q está sendo feita crianças....e em kda letra eu preciso d uma imagem referente a letra....

Aew começam os problemas....

Eu preciso carregar imagens JPeg o TImageList só aceita imagens .Bmp e .Ico....


Alguém conhece algum componente q aceite JPeg??


Fico no aguardo... 


Fiz um exemplo para vc poder adaptar segundo as suas necessidades.
Primeiro vc deve setar a propriedade Masked := False do TImageList

veja o código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ImgList, ExtCtrls, StdCtrls, Buttons, ComCtrls;

type
  TForm1 = class(TForm)
    ImageList1: TImageList;
    ListView1: TListView;
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Jpeg;

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);
var
  Jpg: TJPEGImage;
  bmp: TBitmap;
  i: integer;
  Lista: TStrings;
begin
  try
    try
      Jpg     := TJPEGImage.Create;
      bmp     := TBitmap.Create;
      Lista   := TStringList.Create;
      if (OpenDialog1.Execute) then
      begin
        Lista.AddStrings(OpenDialog1.Files);
        for i := 0 to Pred(OpenDialog1.Files.Count) do
        begin
          Jpg.LoadFromFile(OpenDialog1.Files.Strings[i]);
          bmp.Assign(Jpg);
          bmp.Height := 200;
          bmp.Width  := 200;
          ImageList1.Add(bmp, bmp);
        end;
      end;
    finally
      FreeAndNil(bmp);
      FreeAndNil(Jpg);
      FreeAndNil(Lista);
    end;
  except
    FreeAndNil(bmp);
    FreeAndNil(Jpg);
    FreeAndNil(Lista);
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  ListItem: TListItem;
begin
  for i := 0 to Pred(ImageList1.Count) do
  begin
    ListItem := ListView1.Items.Add;
    Listitem.Caption := ´Imagem n° ´+ IntToStr(i);
    ListItem.ImageIndex := i;
  end;
end;

end.


Neste exemplo que fiz eu add no Opendialog1 só imagem jpg.

Vc disse que quer usar uma imagem jpg em cada botão, para resgatar as imagens colocadas dentro do TImageList basta usar a função
ImageList1.GetBitmap(Index: integer; Bitmap: TBitmap);
Que tem dois parâmetros, Index que é o índice da imagem e um Bitmap que será carregado internamente com a imagem do ImageList especificado pelo índice. exemplo:

  ImageList1.GetBitmap(2, BitBtn1.Glyph);


No exemplo fui obrigado a marretar o tamanho de cada imagem por 200 para meu exemplo. Até porque não tinha imagens do mesmo tamanho, mas vc não precisará fazer isso, porque as suas imagens terão o mesmo tamanho, basta vc configurar o ImageList com o mesmo tamanho de suas imagens.
Espero ter ajudado. Um grande abraço !!!


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Bom dia tonidavi2004, eu testei o seu exemplo e funciona mt bem para o BitBtn...ficou mt legal....

porém...eu preciso q ele funcione para o componente q estou usando...

Nome do botão q estou usando é o ALGraphicButton o mesmo tbm tem a propriedade Glyph e qdo faço assim..

ImageList1.GetBitmap(0,ALGraphicButton1.Glyph);

acontece o seguinte erro...

[b:9875d4fafc]Incompatible types : ´TBitmap´ and ´TImageList´;[/b:9875d4fafc]

Tentei fazer assim....

ImageList1.GetBitmap(0, TBitmap (ALGraphicButton1.Glyph));


compila certinhow...

mas qdo executo a linha acima...acontece AcessViolation....

se vc quiser eu posso enviar o componente pra vc testar...

Blz?


GOSTEI 0
Tonidavi2004

Tonidavi2004

30/09/2008

Manda sim que testo aqui. tonidavi2004@yahoo.com.br


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Tah no seu email..


vlw


GOSTEI 0
Tonidavi2004

Tonidavi2004

30/09/2008

[b:134542929f]WDRocha[/b:134542929f] boa tarde, eu já baixei o componente, eu nem instalei, fui direto olhar o ALButton.pas.
Verifiquei que a propriedade Glyph é um TImageList, por isso deu erro. Uma sugestão para usá-lo, carregue um TImageList com as imagens jpg como te falei anteriormente e seta [b:134542929f]Glyph := ImageList[/b:134542929f] com as imagens carregadas, isso para todos os botões. Agora vc seta a propriedade [b:134542929f]GlyphIndex[/b:134542929f] de cada botão com índice da imagem.[/b]


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Blz..vou fazer o proposto e na segunda eu posto a resposta...


tah acabando o dia d trabalho....rsrsrsrs


Mt obrigado...na segunda sem falta...blz??


bom fds pra vc...


Vlw


GOSTEI 0
Tonidavi2004

Tonidavi2004

30/09/2008

:D blz !!! Bom final de semana pra vc também !!! :D


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Bom dia TonyDavi, eu fiz o proposto...

ALGraphicButton1.Glyph := ImageList1;
ImageList1.GetBitmap(0, TBitmap (ALGraphicButton1.Glyph));


E não deu certo...acontece AcessViolation.... :cry:

tem alguma idéia??

Vlw


GOSTEI 0
Tonidavi2004

Tonidavi2004

30/09/2008

Bom dia !!! Não é isso. É pra vc colocar todas as imagens .jpg no ImageList e depois setar a propriedade Glyph := ImageList do AlButton. Por exemplo:
  ALButton1.Glyph := ImageList;
  ALButton2.Glyph := ImageList;
  ALButton3.Glyph := ImageList;

  ALButton1.GlyphIndex := 0; // primeira imagem do ImageList
  ALButton2.GlyphIndex := 1; // segunda imagem do ImageList
  ALButton3.GlyphIndex := 2; // terceira imagem do ImageList


Assim coloca-se cada imagem referente ao seu próprio botão.


GOSTEI 0
Wdrocha

Wdrocha

30/09/2008

Bom dia ToniDavi, desculpa a demora em responder...


Mas o q vc me passou deu certo...


Mt obrigado pela força...


Vlw..


GOSTEI 0
POSTAR