| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Serenu Novato

Registrado: Quarta-Feira, 7 de Outubro de 2009 Mensagens: 22
|
Enviada: Dom Out 25, 2009 4:00 pm Assunto: Botão com Ícone 32bit (TIcon) |
|
|
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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
Enviada: Seg Out 26, 2009 7:47 am Assunto: |
|
|
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 |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Out 26, 2009 9:18 am Assunto: |
|
|
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 |
|
 |
Serenu Novato

Registrado: Quarta-Feira, 7 de Outubro de 2009 Mensagens: 22
|
Enviada: Seg Out 26, 2009 12:25 pm Assunto: |
|
|
| 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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
|
| Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Out 26, 2009 2:45 pm Assunto: |
|
|
| 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 |
|
 |
Serenu Novato

Registrado: Quarta-Feira, 7 de Outubro de 2009 Mensagens: 22
|
Enviada: Seg Out 26, 2009 2:50 pm Assunto: |
|
|
| 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
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í
Vou dar uma olhada :]
Obrigado |
|
| Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Out 26, 2009 3:05 pm Assunto: |
|
|
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 |
|
 |
Serenu Novato

Registrado: Quarta-Feira, 7 de Outubro de 2009 Mensagens: 22
|
Enviada: Seg Out 26, 2009 3:07 pm Assunto: |
|
|
| 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 |
|
 |
Lehapan Experiente

Registrado: Quarta-Feira, 16 de Junho de 2004 Mensagens: 401 Localização: Caxias do Sul - RS
|
Enviada: Ter Out 27, 2009 2:04 pm Assunto: |
|
|
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 |
|
 |
Serenu Novato

Registrado: Quarta-Feira, 7 de Outubro de 2009 Mensagens: 22
|
Enviada: Qua Out 28, 2009 7:39 pm Assunto: |
|
|
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 |
|
 |
|