Loading icons in tbitbtn and tspeedbutton buttons

1.023 visualizações

Publicada em

This article presents the skeletal structure of a Class for manipulating icons for the purpose of load buttons Classes TBitBtn or TSpeedButton since these classes drawing a figure in the area referenced by their Glyph property (TBitmap) can be simulated by means of conversion formats. Bearing in mind that by default, type buttons TBitBtn TSpeedButton and only accept files from the *. bmp in your Glyph property, the property manipularemos canvas (layer or surface that can be inserted graphics or drawings) belonging to all instances of the class and so TBitmap simulate the load of running files in other formats designs in these types of buttons.

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.023
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Loading icons in tbitbtn and tspeedbutton buttons

  1. 1. CARREGANDO ÍCONES EM BOTÕES TBITBTN E TSPEEDBUTTON Michel Alves dos Santos RESUMO O presente artigo apresenta o esqueleto estrutural de uma classe para manipulação de ícones com a finalidade de carga em botões pertencentes às classes TBitBtn ou TSpeedButton, já que nessas classes o desenho de uma figura na área referenciada por sua propriedade Glyph (TBitmap) pode ser simulado através de conversão de formatos. Tendo em conta que por padrão, botões do tipo TBitBtn e TSpeedButton aceitam apenas arquivos do formato *.bmp em sua propriedade Glyph, manipularemos a propriedade canvas (camada ou superfície na qual podem ser inseridos itens gráficos ou desenhos) pertencentes a todas as instâncias da classe TBitmap e assim simularemos a carga de arquivos em outros formatos executando desenhos nesses tipos de botões. Palavras-chave: Programação, Delphi, Classes, Conversão, Formatos. INTRODUÇÃO As orientações aqui apresentadas são frutos de pesquisas dentro de métodos para facilitação do desenvolvimento de aplicações para ambiente desktop. Freqüentemente nos deparamos com adversidades que pedem um pouco mais de atenção devido à falta de flexibilidade de alguns componentes, seja por restrições da própria plataforma ou por motivos legais. No nosso caso apenas por restrições da própria plataforma que no momento não configuram um cenário instransponível. O fato que iremos abordar nesse artigo é o carregamento de outros formatos de figuras diferentes do formato padrão *.bmp em componentes das classes TBitBtn e/ou TSpeedButton. Para muitos programadores os formatos referentes ao padrão bitmap não são tão recomendados visto que, um número muito grande de informações (profundidade de bits, numero de cores, mantissa, sombra, efeitos de degrade, etc) torna a escolha do formato “mapa de bits” uma solução não tão atraente, devido ao tamanho em disco que a figura pode alcançar no final de sua edição. Não esquecendo que uma figura muito rebuscada pode pesar no tamanho final em disco do software, depois de compilado. Contudo alguns programadores optam por manter arquivos reduzidos de algumas figuras com o mesmo formato bitmap, perdendo na maioria das vezes no design e conseqüentemente empobrecendo a interface. Usar os ícones que acompanham o Delphi pode ser uma boa pedida como forma de padronização de interfaces, mas ao mesmo tempo pode prejudicar o programador, pois suas aplicações não
  2. 2. conseguirão obter um diferencial, o que poderia distingui-lo de outros no que tange o escopo de design de seus softwares. Além disso, arquivos no formato *.ico ou *.jpeg podem armazenar um número maior de informações ao mesmo tempo em que ocupam um menor espaço em disco. DESENVOLVIMENTO Para a execução da conversão dos formatos *.ico, *.jpg e *.wmf para o formato bitmap, que pode ser escrito na propriedade glyph dos componentes TBitBtn e/ou TspeedButton, construímos uma classe com os métodos LoadIcon, LoadJpeg, LoadMetafile, sendo suas assinaturas basicamente semelhantes: recebem como parâmetro um caminho onde possa estar armazenado o arquivo desejado e retornam um objeto da classe TBitmap. Este objeto por sua vez é setado na propriedade Glyph dos botões na forma de linha de comando, em tempo de runtime, fazendo com que a figura não seja incorporada ao executável, flexibilizando a mudança a qualquer momento e simulando uma espécie de skin. Esqueleto da classe TLoadIcons. A forma de invocação dos métodos da classe pode ser visualizada logo abaixo, com a simples chamada ao método que converterá o arquivo de formato escolhido (ico, jpg ou wmf) para o formato *.bmp.
  3. 3. Chamada ao método que converte formatos *.ico em *.bmp para apresentação em botões. A interface em execução pode ser vista logo abaixo representada na figura que segue. As seções estão separadas por classe de botão e método de carregamento. Na primeira seção (“Carregamento Normal de Ícones e Figuras”) temos 3 botões sendo dois do tipo TSpeedButton e um do tipo TBitBtn. O primeiro que está com foco é um botão do tipo TBitBtn e receberá um ícone. O segundo botão é do tipo TSpeedButton, que também receberá um ícone e finalmente o terceiro é um TSpeedButton que receberá um arquivo no formato *.jpg, obviamente convertido para o formato *.bmp. Visualização da interface de testes dos métodos de carregamento de imagens em botões do tipo TBitBtn ou/e TSpeedButton. Na segunda seção (“Carregamento de ícone através de caminho fornecido”) temos um botão da classe TSpeedButton que receberá uma figura do tipo *.ico, passado como parâmetro o caminho de tal arquivo. O caminho poderá ser dado através da caixa de texto ou fornecido através da caixa de diálogo OpenPicture, que é executada quando o botão ‘Procurar ícone’ é pressionado. Na terceira e última seção (“Carregando WMF”), quando o botão (“TSpeedButton WMF”) da classe TSpeedButton é executado, um WMF é carregado em seu canvas. A classe pode ser expandida para outros formatos gráficos, mas para tanto, deve ser assegurado que a plataforma Delphi usada comporte classes que possam fazer a conversão do formato desejado para o formato Bitmap, como é o caso do formato *.gif (Graphic
  4. 4. Interchange Format) que na maioria das vezes, consegue ser apenas processado através da aquisição de bibliotecas de terceiros. Abaixo, temos a visão do carregamento dos formatos permitidos pela classe TLoadIcons. Ìcones carregados através dos métodos da classe TLoadIcons. Devemos atentar que, para ícones que se comportam como ICL ´s a figura padrão que será carregada será o ícone setado como default dentro do arquivo. Para burlar esse tipo de infortúnio devemos editar o ícone desejado excluindo as camadas adicionais (ícones 8x8, ícones 16x16, ícones 48x48) existentes dentro do arquivo com algum editor especializado tal como microangelo, iconedit, Icon Studio, ABBIcon Pro, Active ICONStudio, ArtIcons, IconDeveloper (particularmente recomendado) ou qualquer outro da sua preferência. Os demais formatos de figuras devem ser mensurados conforme a necessidade do programador e modelos de design utilizados. Conforme vimos, esse método de carregamento ajuda o programador a diversificar a forma como uma interface entre sistema e usuário é projetada flexibilizando as alternativas para arquivos diferentes do padrão *.bmp, diminuindo algumas vezes de forma
  5. 5. substancial o tamanho do executável. Trechos do código da classe de conversão podem ser vistos logo abaixo. {Método que retorna um bitmap a partir de um ico} function TLoadIcons.LoadIcon(const strPath: String): TBitmap; var Icon : TIcon; Bitmap : TBitmap; begin {Cria um ícone temporario} Icon := TIcon.Create; try {Cria um bitmap temporario} Bitmap := TBitmap.Create; try {Carrega o icone .ICO} Icon.LoadFromFile(strPath); {Faz a conversao} Bitmap.Height := Icon.Height; Bitmap.Width := Icon.Width; Bitmap.Canvas.Draw(0, 0, Icon); {Retorna o bitmap} Result := Bitmap; finally //Bitmap.Free; end; finally Icon.Free; end; end; Para maiores informações sobre os métodos de conversão consulte os arquivos em anexo. CONCLUSÃO Dessa forma podemos conhecer outros métodos de carregamento de imagens em botões fazendo com que o tamanho final do software seja bem menor além de desacoplar as figuras do executável, criando uma espécie de padrão de skin (pele) para cada tipo de aplicação precisando apenas mudar a pasta de figuras na qual estão localizados os ícones da aplicação. Michel Alves dos Santos - Formado em Processamento de Dados (Curso Técnico de Nível Médio) e Tecnologia da Informação (Tecnólogo de Nível Superior) pelo Centro Federal de Educação Tecnológica do Estado de Alagoas – CEFET/AL. Programador Delphi desde a versão 2.0. Contato : michel.mas@gmail.com ou michelalvessantos@hotmail.com

×