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 

Botão com Ícone 32bit (TIcon)

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


Registrado: Quarta-Feira, 7 de Outubro de 2009
Mensagens: 22

MensagemEnviada: Dom Out 25, 2009 4:00 pm    Assunto: Botão com Ícone 32bit (TIcon) Responder com Citação

Olá, como o próprio assunto diz, estou tentando colocar um ícone 32bit em um botão, mas o único código que encontrei até agora e que não deu erro foi este:
Citação:

Procedure IcoToBit(ArquivoIco: String; BitBtn: TBitBtn);
Var
Pic : TPicture;
Icone : TIcon;
begin
Icone:= TIcon.Create;
Pic := TPicture.Create;
try
Icone.LoadFromFile(ArquivoIco);
Pic.Icon := Icone;
BitBtn.Glyph := TBitmap.Create;
BitBtn.Glyph.Width := Icone.Width;
BitBtn.Glyph.Height := Icone.Height;
BitBtn.Glyph.Canvas.Draw(0, 0, Pic.Icon);
finally
Pic.Free;
Icone.Free;
end;
end;

Ele passa o ícone para o glyph do botão, mas suas áreas transparentes se convertem para branco =( [sendo assim um ícone 24bit, ou um simples bitmap]

Alguém tem alguma idéia ? =P

Obs¹: Já tentei com SpeedButton, deu o mesmo resultado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Seg Out 26, 2009 7:47 am    Assunto: Responder com Citação

Já tentou utilizar um TImageList e um TActionList, assim você pode vincular os ícones nas actions do TActionList e após vincular a action no seu botão e ele irá carregar automaticamente a imagem da action para o seu botão, assim como irá carregar o evento OnExecute da action para o OnCLick do seu botão.

Espero ter ajudado.
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Out 26, 2009 9:18 am    Assunto: Responder com Citação

ICO depende dele e da definição de vídeo.

diferente do PNG q seu canal alpha não depende de conf de video
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Serenu
Novato
Novato


Registrado: Quarta-Feira, 7 de Outubro de 2009
Mensagens: 22

MensagemEnviada: Seg Out 26, 2009 12:25 pm    Assunto: Responder com Citação

Lehapan escreveu:
Já tentou utilizar um TImageList e um TActionList, assim você pode vincular os ícones nas actions do TActionList e após vincular a action no seu botão e ele irá carregar automaticamente a imagem da action para o seu botão, assim como irá carregar o evento OnExecute da action para o OnCLick do seu botão.

Espero ter ajudado.

Não tentei isso ainda, na verdade nunca usei um TActionList.
Poderia me explicar como fazer isso mais detalhadamente ?
O que eu já fiz foi converter um TImageList para 32bit TImageList, só que o único objeto que aceita seus ícones é a TToolBar (na propriedade Images).




gilsonnrodrigues escreveu:
ICO depende dele e da definição de vídeo.

diferente do PNG q seu canal alpha não depende de conf de video
Espero ter ajudado.

Esta definição de vídeo que você está se referindo é do sistema operacional ou do programa ?
Pois com TImageList funciona, mas o problema seria passar a imagem do ImageList para um BitButton ou SpeedButton.










Obrigado pela ajuda :]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Seg Out 26, 2009 2:40 pm    Assunto: Responder com Citação

de uma olhada neste links
http://imasters.uol.com.br/artigo/1000/delphi/action_list/
http://forum.devmedia.com.br/viewtopic.php?t=34291&highlight=actionlist

Aqui tem um vídeo
http://www.t2ti.com/curso/video/delphi/iniciante/minicursos/ActionList.rar

Espero ter ajudado.
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Out 26, 2009 2:45 pm    Assunto: Responder com Citação

Serenu escreveu:
Lehapan escreveu:
Já tentou utilizar um TImageList e um TActionList, assim você pode vincular os ícones nas actions do TActionList e após vincular a action no seu botão e ele irá carregar automaticamente a imagem da action para o seu botão, assim como irá carregar o evento OnExecute da action para o OnCLick do seu botão.

Espero ter ajudado.

Não tentei isso ainda, na verdade nunca usei um TActionList.
Poderia me explicar como fazer isso mais detalhadamente ?
O que eu já fiz foi converter um TImageList para 32bit TImageList, só que o único objeto que aceita seus ícones é a TToolBar (na propriedade Images).




gilsonnrodrigues escreveu:
ICO depende dele e da definição de vídeo.

diferente do PNG q seu canal alpha não depende de conf de video
Espero ter ajudado.

Esta definição de vídeo que você está se referindo é do sistema operacional ou do programa ?
Pois com TImageList funciona, mas o problema seria passar a imagem do ImageList para um BitButton ou SpeedButton.

Obrigado pela ajuda :]



como assim imagelist funciona?

quem disse q funciona.

teste.

image list não funciona nem com o video estando 32 bits.

imagelist nao funciona com icone q tem alpha pq ele grava o recusro como bitmap.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Serenu
Novato
Novato


Registrado: Quarta-Feira, 7 de Outubro de 2009
Mensagens: 22

MensagemEnviada: Seg Out 26, 2009 2:50 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
Serenu escreveu:
Lehapan escreveu:
Já tentou utilizar um TImageList e um TActionList, assim você pode vincular os ícones nas actions do TActionList e após vincular a action no seu botão e ele irá carregar automaticamente a imagem da action para o seu botão, assim como irá carregar o evento OnExecute da action para o OnCLick do seu botão.

Espero ter ajudado.

Não tentei isso ainda, na verdade nunca usei um TActionList.
Poderia me explicar como fazer isso mais detalhadamente ?
O que eu já fiz foi converter um TImageList para 32bit TImageList, só que o único objeto que aceita seus ícones é a TToolBar (na propriedade Images).




gilsonnrodrigues escreveu:
ICO depende dele e da definição de vídeo.

diferente do PNG q seu canal alpha não depende de conf de video
Espero ter ajudado.

Esta definição de vídeo que você está se referindo é do sistema operacional ou do programa ?
Pois com TImageList funciona, mas o problema seria passar a imagem do ImageList para um BitButton ou SpeedButton.

Obrigado pela ajuda :]



como assim imagelist funciona?

quem disse q funciona.

teste.

image list não funciona nem com o video estando 32 bits.

imagelist nao funciona com icone q tem alpha pq ele grava o recusro como bitmap.


"quem disse q funciona."
Estou usando aqui Very Happy
Eu uso uma procedure que converte ImageList pra 32bit ImageList
Se quiser ver para crer:
Citação:

procedure ConvertTo32BitImageList(const ImageList: TImageList); //CommCtrl, Classes, Consts;
const
Mask: array[Boolean] of Longint = (0, ILC_MASK);
var
TemporyImageList: TImageList;
begin
if Assigned(ImageList) then
begin
TemporyImageList := TImageList.Create(nil);
try
TemporyImageList.Assign(ImageList);
with ImageList do
begin
ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);
if not ImageList.HandleAllocated then
begin
raise EInvalidOperation.Create(SInvalidImageList);
end;
end;
ImageList.AddImages(TemporyImageList);
finally
TemporyImageList.Free;
end;
end;
end;

No evento OnClick de um botão:
Citação:

ImageList1.Clear;
ConvertTo32BitImageList(ImageList1);
ImageList1.AddIcon(Image1.Picture.Icon);


Teste aí Wink





Lehapan escreveu:

de uma olhada neste links
http://imasters.uol.com.br/artigo/1000/delphi/action_list/
http://forum.devmedia.com.br/viewtopic.php?t=34291&highlight=actionlist

Aqui tem um vídeo
http://www.t2ti.com/curso/video/delphi/iniciante/minicursos/ActionList.rar

Espero ter ajudado.

Vou dar uma olhada :]
Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Out 26, 2009 3:05 pm    Assunto: Responder com Citação

eu disse q ele salva o recusros como bitmap.

ai vc ta carregando o icone em tempo de execução.

mas tente colocar icones q tem semi-transparencia no imagelist e salvar no dfm e usalos em tempo de execução.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Serenu
Novato
Novato


Registrado: Quarta-Feira, 7 de Outubro de 2009
Mensagens: 22

MensagemEnviada: Seg Out 26, 2009 3:07 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
eu disse q ele salva o recusros como bitmap.

ai vc ta carregando o icone em tempo de execução.

mas tente colocar icones q tem semi-transparencia no imagelist e salvar no dfm e usalos em tempo de execução.


ah, entendi

sim em tempo de projeto acho que é impossível mesmo =p
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lehapan
Experiente
Experiente


Registrado: Quarta-Feira, 16 de Junho de 2004
Mensagens: 401
Localização: Caxias do Sul - RS

MensagemEnviada: Ter Out 27, 2009 2:04 pm    Assunto: Responder com Citação

Para esclarecimento de dúvidas, em tempo de projeto não é possível incluir um arquivo do tipo ICO, para fazer isto, somente em tempo de execução.

Desculpe se minhas respostas deixaram dúvidas.
_________________
Wilson Lehapan Junior, vulgo Paulista...!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Serenu
Novato
Novato


Registrado: Quarta-Feira, 7 de Outubro de 2009
Mensagens: 22

MensagemEnviada: Qua Out 28, 2009 7:39 pm    Assunto: Responder com Citação

Lehapan,
eu ainda não consegui olhar com calma os links sobre TAction list, então vou dar a resposta do problema só sexta eu acho


Mas quem tiver mais idéias eu gostaria que fossem postando !

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
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