[ASTUCE] COMMENT VOIR UN ITEM, D'UNE LISTBOX, TRONQUÉ DANS UN HINT
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
24 mars 2009 à 22:08
FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009
-
27 mars 2009 à 15:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
@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.
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 25 mars 2009 à 15:39
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...
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 25 mars 2009 à 15:31
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 ;).
@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...
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 24 mars 2009 à 22:55
« Quel est le problème ? »
Le problème est que quand tu vois la fin, tu ne vois plus le début. lolll
C'est sûr que ta ScrollBar se comporte comme toutes les ScrollBar. Mais je précise que toutes les ScrollBar me tapent sur les nerfs.
C'est pour cette raison que ton source fait progresser l'ergonomie pour les nerveux comme moi.
Pour le HintPause=0, après essai, je ne trouve pas que c'est pas cool.
Peut-être que afficher le Hint juste à la place de l'Item concerné et de changer la couleur par défaut de son fond par la couleur du fond de la ListBox serait intéressant pour bien montrer à l'utilisateur que ce n'est pas une bulle d'aide habituelle (qu'on ne lit plus).
"il semblerait que la scrollbar horizontale n'existe pas sous Delphi 6 Personal Edition."
c'est pour ça qu'il y a le code en commentaire :D
"De toute façon la scrollbar horizontale n'est pas ergonomique et me tape sur les nerfs."
quel est le problème ?
chez moi elle fonctionne très bien et se comporte comme n'importe quelle autre ScrollBar !!!
"Mais j'aurais mis "Application.HintPause := 0;""
c'est ce qui était au départ mais le comportement n'est pas correcte ... puisqu'à chaque mouvement de la souris un Hint apparaissait ... pas très cool :(
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 24 mars 2009 à 22:27
... De toute façon la scrollbar horizontale n'est pas ergonomique et me tape sur les nerfs.
Mais j'aurais mis "Application.HintPause := 0;", moi.
Parce que attendre 1/2 seconde, ça me tape aussi sur les nerfs. Mais j'dois être particulièrement nerveux en ce moment... lolll
Merci pour mes nerfs, Cirec.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 24 mars 2009 à 22:08
Juste pour info, il semblerait que la scrollbar horizontale n'existe pas sous Delphi 6 Personal Edition.
Donc Delphi 7 minimum je pense :)
27 mars 2009 à 15:54
25 mars 2009 à 16:35
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.
25 mars 2009 à 15:39
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...
25 mars 2009 à 15:31
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 ;).
25 mars 2009 à 13:41
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...
24 mars 2009 à 22:55
Le problème est que quand tu vois la fin, tu ne vois plus le début. lolll
C'est sûr que ta ScrollBar se comporte comme toutes les ScrollBar. Mais je précise que toutes les ScrollBar me tapent sur les nerfs.
C'est pour cette raison que ton source fait progresser l'ergonomie pour les nerveux comme moi.
Pour le HintPause=0, après essai, je ne trouve pas que c'est pas cool.
Peut-être que afficher le Hint juste à la place de l'Item concerné et de changer la couleur par défaut de son fond par la couleur du fond de la ListBox serait intéressant pour bien montrer à l'utilisateur que ce n'est pas une bulle d'aide habituelle (qu'on ne lit plus).
24 mars 2009 à 22:35
c'est pour ça qu'il y a le code en commentaire :D
"De toute façon la scrollbar horizontale n'est pas ergonomique et me tape sur les nerfs."
quel est le problème ?
chez moi elle fonctionne très bien et se comporte comme n'importe quelle autre ScrollBar !!!
"Mais j'aurais mis "Application.HintPause := 0;""
c'est ce qui était au départ mais le comportement n'est pas correcte ... puisqu'à chaque mouvement de la souris un Hint apparaissait ... pas très cool :(
24 mars 2009 à 22:27
Mais j'aurais mis "Application.HintPause := 0;", moi.
Parce que attendre 1/2 seconde, ça me tape aussi sur les nerfs. Mais j'dois être particulièrement nerveux en ce moment... lolll
Merci pour mes nerfs, Cirec.
24 mars 2009 à 22:08
Donc Delphi 7 minimum je pense :)
Cordialement, Bacterius !