sábado, 23 de novembro de 2024
Home
Artigos
Banco de Dados
Access
Firebird
Microsoft SQL Server
MySql
Oracle
Sybase
BI
QlikView
Dicas de Internet
e-business
Hardware
Multimídia
Flash
Programação
.NET/ASP.NET
.NET/C#
.NET/Framework
.NET/VB.NET
ASP
C/C++
Clipper
Cobol
CSS
Delphi
Java
Javascript
JSP
Palm
Perl
PHP
Shell
Visual Basic
WAP
Redes
Segurança
Servidores E-mail
Servidores Web
Apache
Microsoft IIS
Sistemas Operacionais
AIX
DOS
HPUX
Linux
Palm OS
Solaris
True64
Windows 7
Windows 9X
Windows NT
Windows Vista
Windows XP
Software Review
PC
Storages
Veritas VM
Conteúdo atual do site:
[807] ítens, entre artigos, funções e documentos.
Pesquisa Rápida:
Últimos 3 acessos:
Alexandre Neves 03/03/2015 11:08:01 167 acesso(s) alexandre neves 03/03/2015 11:06:42 1 acesso(s) Marcelo Torres 21/01/2015 15:24:53 61 acesso(s)
Opções:
Listagem completa Listagem simples
Ranking Colaboradores:
Adenilton Rodrigues - [304] Alexandre Neves - [61] Douglas Freire - [54] Marcelo Giovanni - [53] Marcelo Torres - [43] Angelita Bernardes - [31] Addy Magalhães Cunha - [28] Manuel Fraguas - [24] Ludmila Valadares - [20] Marcelo Capelo - [18]
Veja como não é complicado colocar imagens dentro de um ComboBox.
Inicialmente, é necessário setar a propriedade "Style" do ComboBox para "csOwnerDrawVariable". Desta forma teremos a liberdade para desenharmos o que quisermos dentro do ComboBox. Imaginemos que o nosso ComboBox possui três ítens. E para cada ítem colocaremos uma imagem diferente. Para isso, criaremos um vetor que terá um número de elementos correspondente a quantidade de ítens de nosso ComboBox. No nosso exemplo, serão três elementos. Este vetor deve ser criado como uma variável "private" (em "private declarations" do form). private Img: Array[0..2] of TBitmap; A seguir, no evento "OnCreate" do nosso formulário colocaremos o seguinte: procedure TForm1.FormCreate(Sender: TObject); begin Img[0] := TBitmap.Create; Img[0].LoadFromFile('edit.bmp'); ComboBox1.Items.AddObject('Edit', Img[0]); Img[1] := TBitmap.Create; Img[1].LoadFromFile('delete.bmp'); ComboBox1.Items.AddObject('Delete', Img[1]); Img[2] := TBitmap.Create; Img[2].LoadFromFile('export.bmp'); ComboBox1.Items.AddObject('Export', Img[2]); end; Agora o trabalho é no evento "OnDrawItem" do ComboBox que deverá ter o seguinte: procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var Bmp: TBitmap; Off: Integer; Cmb: TComboBox; begin Cmb := (Control as TComboBox); with Cmb.Canvas do begin FillRect(Rect); Off := 0; Bmp := TBitmap(ComboBox1.Items.Objects[Index]); if Bmp <> nil then begin BrushCopy(Bounds(Rect.Left+2, Rect.Top+2, Bmp.Width, Bmp.Height), Bmp, Bounds(0, 0, Bmp.Width, Bmp.Height), clOlive); Off := Bmp.Width+8; end; TextOut(Rect.Left + Off, Rect.Top, ComboBox1.Items[Index]); end; end; E, finalmente, no evento "OnMeasureItem" do ComboBox: procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin Height := 20; end; Alguma explicação: O evento "OnDrawItem" é o responsável por "desenhar" cada ítem do ComboBox quando clicamos no ícone para abrí-lo. Simplesmente aproveitamos isto para desenhar a nossa imagem antes do texto. Neste mesmo evento fizemos uma chamada a função "BrushCopy", onde o último parâmetro é a cor que deseja que fique transparente. Como eu utilizei imagens que vem com o Delphi, a cor de fundo destas imagens é o amarelo escuro (clOlive). Daí pra frente é testar com imagens diferentes, porém, uma sugestão é que todas tenham o mesmo tamanho para que se mantenha um padrão dentro do seu ComboBox. Quebra-Linha Colaborador..: Marcelo Torres Categoria(s).: Delphi; Versão.......: 1 Data.........: 10/12/2004 10:22:01 Visualizado..: 5876 vezes Fonte........: Internet - Desconhecido
Marcelo Torres
Últimos Artigos deste colaborador Usando a função MessageBox - 16/06/2006 15:47:15 Obter conteúdo de janela popup - 13/06/2006 09:03:26 Confirmação antes de processar formulário - 20/04/2006 10:21:44
Últimos Artigos desta categoria Usando a função MessageBox - 16/06/2006 15:47:15 Atualização de Sistemas - 06/10/2005 01:07:16 CRÍTICA DE DATAS NO OBJETO EDIT SEM MENSAGEM DE ERRO DO DELPHI - 17/03/2006 14:58:31
142 pessoa(s) on-line neste site.