[astuce] comment voir un item, d'une listbox, tronqué dans un hint

Soyez le premier à donner votre avis sur cette source.

Vue 6 440 fois - Téléchargée 861 fois

Description

Un code tout ce qu'il y a de plus simple
Tellement simple et évident qu'il devrait être disponible d'origine dans la VCL.
Mais voilà ... il n'y est pas ... de quoi il est question ?

il vous est certainement déjà arrivé d'avoir des Items tronqués dans une TListBox ... qui n'a jamais rêvé de pouvoir les voir (lire) en entier dans un Hint ?

Ben ne rêvez plus ... c'est chose faite :D
ps: pour que cette surcharge du composant TListBox soit reconnue et utilisée il faut impérativement déclarer l'unité "lbExtHints" après l'unité "StdCtrls"

une deuxième possibilité est ajouter une ScrollBar horizontale
bien que ce n'est pas le but de ce code j'y ai quand même ajouté cette méthode.
ps2: ne sachant pas si cette propriété existe avant D7 ...
il y a une alternative dans le code (en commentaire)

Source / Exemple :


All in ZIP

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009

Une astuce simple et efficace... comme j'aime !
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
@Francky:
merci pour l'info
oui mais non ... ^^
si j'ai choisi cette méthode c'est justement pour éviter de créer un nouveau composant et de devoir l'installer ;)
y'en a marre d'avoir des tonnes de composants à installer etc.etc. le pire étant les packs de 36 composants qu'il faut impérativement installer alors qu'un seul pourrait et je dis bien pourrait, te servir. Alors non je ne souhaite pas contribuer a cette "décharge" de composants ... j'installe déjà pas la JVCL alors ... hein :O
La création et l'installation de composants c'est en dernier recours ... seulement quand il n'y a pas d'autres possibilités.

Mais si ça te branche de le faire ... vas y ;)

@Debiars:
oui je le sais (voir la description du code)
j'ai juste ajouté cette possibilité de ScrollBar horizontale pour ceux qui ne savait pas qu'elle existait ... mais le but principal de ce code c'est l'affichage des textes tronquées dans des bulles.
Messages postés
285
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
11 février 2018

En D7, TListBox comporte une propriété ScrollWidth qui peut être modifiée en cours d'exécution...

Testée (rapido) avec ceci :

procedure TForm1.ListBox1Click(Sender: TObject);
var lg : integer;
begin
lg := Canvas.TextWidth(ListBox1.Items[ListBox1.ItemIndex]);
if Listbox1.Width < lg then
Listbox1.ScrollWidth := lg;
end;

Bien sûr, il faut cliquer sur la ligne..., ça peut énerver... :D

@Cari, méfie-toi , rouge comme tu l'est, tu risque l'explosion...
Messages postés
400
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
11 février 2016
1
Salut,

la ScrollBar Horizontale fonctionne sous D6 maintenant.
Moi je l'aime bien cette petite astuce : elle peut être bien utile. Tu devrais en faire un composant en y incorporant des fonctionnalités comme la couleur (Pour rejoindre la proposition de Cari), ainsi que la possibilité de paramètrer le temps d'attente avant l'affichage ;).
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
@Bacterius:
la ScrollBar Horizontale fonctionne t-elle maintenant sous D6 ou non ?

@Caribensila:
changer la couleur oui c'est pas un souci
mais l'afficher à la place de l'item concerné me semble "bancal" :D
c'est pas impossible mais il faudrait pour cela réécrire une classe THintWindow afin de tout gérer correctement.
Pourquoi ?
ben déjà si tu forces l'affichage du hint à une position précise tu perds le positionnement automatique de la bulle. Exemple si tu mets la fiche de la démo au bord droit de l'écran et tu choisis l'item le plus long il tient automatiquement compte de la taille de l'écran et déplace la bulle vers la gauche de façon à ce qu'elle s'affiche entièrement...
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.