Multi-Lines: TCombobox

Veja nesta Quick Tip como colocar os itens do seu TCombobox em mais de uma linha.

Olá galera, vamos a esta Quick Tip, que tem a função mostrar como podemos exibir um item do TCombobox em mais de uma linha.

Vamos lá, para isso precisamos obviamente ter um TCombobox no nosso formulário, em seguida vamos dar uses em ExtCtrls.

Vamos precisar acessar dois eventos do nosso combobox o primeiro é o onMeasureItem, e o segundo é o onDrawItem.

procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); var ItemString: string; MyRect: TRect; MyImage: TImage; MyCombo: TComboBox; begin if (Index > -1) then begin MyCombo := TComboBox(Control); MyImage := TImage.Create(MyCombo); try MyRect := MyCombo.ClientRect; ItemString := MyCombo.Items.Strings[Index]; MyImage.Canvas.Font := MyCombo.Font; Height := DrawText(MyImage.Canvas.Handle, PChar(ItemString), - 1, MyRect, DT_CALCRECT or DT_WORDBREAK); finally MyImage.Free; end; end; end;
Listagem 1. Desenhando o multi-line
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var ItemString: string; begin TComboBox(Control).Canvas.FillRect(Rect); ItemString := TComboBox(Control).Items.Strings[Index]; DrawText(TComboBox(Control).Canvas.Handle, PChar(ItemString), - 1, Rect, DT_WORDBREAK); end;
Listagem 2. Pintando o texto no formato das linhas
Resultado
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados