Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 2010
-
13 juil. 2006 à 15:01
Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 2010
-
18 juil. 2006 à 16:50
Bonjour,
J'ai mis ce titre simpliste pour qu'un maximum de persone vienne le voir.
J'aimerais savoir s'il était possible de mettre dans une listbox, un texte normal, et de rajouter un autre texte sur la même ligne mais tout à fait à droite.
Par exemple ceci :
_____________________
| |
| Texte texte à droite |
|____________________|
Voilà, donc un texte normalement écrit à gauche, et à sa droite un autre texte normal, mais collé tout à fait à droite.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 13 juil. 2006 à 19:00
Salut,
Voici un exemple de procedure DrawItem pour reprendre la 2° méthode de Mauricio (à propos : Salut Mauricio !) :
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
s,s2: string;
begin s:= 'Texte à gauche';
s2:= 'Texte à droite';
with ListBox1 do
begin
Canvas.Font.Assign(Font);
if odSelected in State then //item sélectionné
begin
Canvas.Brush.Color:= clNavy;
Canvas.Font.Color:= clWhite;
end
else
Canvas.Brush.Color:= Color;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(s), -1, Rect, DT_SINGLELINE or DT_VCENTER or DT_LEFT);
DrawText(Canvas.Handle, PChar(s2), -1, Rect, DT_SINGLELINE or DT_VCENTER or DT_RIGHT);
end;
end;
Evidemment à toi de gérer la longueur des chaines pour qu'il n'y ait pas chevauchement. Tu peux aussi changer les valeurs de Rect : DrawText n'écrit que dans le Rect qu'on lui donne.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 18 juil. 2006 à 09:55
N'as-tu pas oublié de mettre la propriété style de ton ListBox à lbOwnerdrawFixed ?
Pcq, avec style = lbStandard, l'événement OnDrawItem n'est pas appelé.
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 13 juil. 2006 à 16:58
Salut,
il existe plusieurs façons de faire cela.
La plus simple est de contourner le problème utilisant une police dont tous les caractères occupent le même nombre de pixels sur la ligne comme par exemple la police courrier new utilisée dans l' éditeur de code de Delphi. Il suffit de compléter avec des espaces afin de créer l' impression de colonnes.
Une autre méthode serait d' utiliser l' événement OnDrawItem de ta ListBox/ComboBox.
Pour cela tu dois changer la propriété style en csOwnerdrawFixed...
Comme c' est toi qui contrôle la façon dont les items sont montrés, tu peux dessiner les colonnes que tu désires ...
Des compos qui permettent de gérer plusieurs colonnes sont aussi trouvables sur le net.
Je pense que tu devrais trouver sur ce site des sources qui t' aideront ...
Sachant que je n'aime pas du tout "dessiner" sous Delphi, j'ai du mal à tout comprendre, mais n'en reste pas moins que j'ai tout taper comme il fallait, à certe j'ai pas d'erreurs, mais j'ai beau lancer le programe et faire ce que je veux avec il ne m'affiche jamais le "texte à gauche" et le "texte à droite"...
Donc quoi faire pour qu'il m'affiche ce que THWilliam à programmé ci-dessus ?