Alignement dans une liste box

Résolu
lapucedu88 Messages postés 96 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 22 mai 2008 - 20 janv. 2005 à 07:55
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 20 janv. 2005 à 09:54
Actuellement je dois réaliser un composant calcuatrice avec une bande pour un stage de fin d'année. Le problème est que ma bande est réalisée grâce à un liste box, et qu'il faut que j'aligne tous ses items sur la droite plutot que sur la gauche.

Je sais que l'on peut le faire grâce a la propriété canvas de la liste box mais cela tronque mes items puisque que je ne sais pas réellement la taille qu'ils peuvent faire.

Si quelqu'un connaît un autre moyen d'aligner dans une liste box je suis ouverte à toute proposition.

Merci d'avance à vous tous.

La puce

2 réponses

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
20 janv. 2005 à 09:21
Salut, la puce



La largeur nécessaire pour écrire une chaîne est donnée par la méthode TextWidth du canvas.



procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

var

S :string;

w : Integer;

begin

s := ListBox1.Items[Index];

//chaîne à écrire

w := ListBox1.Canvas.TextWidth(s);

// largeur d'icelle

ListBox1.Canvas.TextOut(Rect.Right-W,Rect.Top,s); // dessin aligé à droite

end;



Il ne faut pas oublier de mettre

ListBox1.Style := lbOwnerDrawFixed;




Ken@vo

____________________

Code, Code, Codec !
3
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
20 janv. 2005 à 09:54
Hello,



Ah ben cool pour la enieme fois que delphifr plante quand j'ajoute une
reponse et bien entre temps kenavo à ecrit la meme chose que ce que
j'avais mis.



Je confirme que le code de Kenavo est correct juste une petite reprise

Je pense qu'il faut mieux mettre (Control as TListBox) au lieu de ListBox1.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
3