Passando pela internet encontrei uma dica que achei interessante.
Não sei se você já precisou alterar o alinhamento dos valores de um combo ou listbox, mas caso precise fica aí a dica…
Por exemplo, se você tem um combobox ou um listbox com valores numéricos, e deseja que fiquem alinhandos à direita, siga os passos abaixo:
Evento onCreate do form:
ComboBox1.Style := csOwnerDrawFixed; ListBox1.Style := lbOwnerDrawFixed;
E agora no evento onDrawItem de cada um deles:
// ComboBox var x: Integer; txt: String; begin with ComboBox1 do begin Canvas.FillRect(Rect) ; txt := Items[Index]; x := Rect.Right - Canvas.TextWidth(txt) - 4; Canvas.TextOut(x, Rect.Top, txt) ; end; end;
// ListBox var x: Integer; txt: String; begin with ListBox1 do begin Canvas.FillRect(Rect) ; txt := Items[Index]; x := Rect.Right - Canvas.TextWidth(txt) - 4; Canvas.TextOut(x, Rect.Top, txt) ; end; end;
Pronto, a partir disso também podemos alinhar ao centro, apenas mudando o valor da variavel x no evento onDrawItem:
x := Round((Width - Canvas.TextWidth(txt))/2) - 4;
Em breve voltarei com mais dicas
Willian Rodrigues