Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Surlignage de texte sélectionné dans un mémo | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Surlignage de texte sélectionné dans un mémo Lun 13 Déc 2010 - 19:19 | |
| Quand on sélectionne du texte dans un mémo par la commande SELECT_TEXT, ce texte est bien sélectionné mais pas surligné dans le mémo. Il sera surligné seulement après l'exécution de la commande END. Et une fois la commande END exécutée, aucun autre SELECT_TEXT ne peut plus surligner le texte sélectionné. Voici un programme pour le mettre en évidence: - Code:
-
label start
memo 10 left 10,10 : top 10,150 height 10,100 : width 10,100
item_add 10,"123" item_add 10,"4567890"
button 20 top 20,280 : left 20,10 : caption 20,"Lancer" on_click 20,start
print "Le mémo contient 2 lignes." print "On sélectionnne du texte ainsi:" print "text_select 10,3,4" print print "Mais le texte sélectionné n'est pas surligné." print "Le surlignage n'apparaît qu'après la commande END !" print "Et un SELECT_TEXT après un END ne surligne rien." print "Pour le vérifier, cliquer sur Lancer"
select_text 10,3,4 message "Le text est sélectionné mais pas surligne !" message select_read$(10)
end
start: select_text 10,7,3 message select_read$(10) return
end
J'aimerais que le texte sélectionné soit surligné, quelque soit le moment dans le programme auquel on exécute la commande SELECT_TEXT. Et en corollaire, j'ai une demande pour une nouvelle fonction à formuler. On a bien la fonction COUNT() qui retourne le nombre de lignes des objets MEMO, LIST, DLIST et COMBO. C'est très utile. Mais il manque une fonction importante: celle de retourner le texte entier d'un MEMO, LIST ou DLIST en une seule chaîne de caractères, avec les CR LF enrte les lignes bien sûr, tels qu'ils sont présents dans l'objet. Et ils y sont bien: il suffit de regarder le programme ci-dessus qui extrait 4 caractères à partir de la position 3, et on affiche "3" sur une ligne et "4" sur la suivante, et il y a donc bien CR et LF. Ce serait donc facile d'extraire le texte total (comme pour un file_save). Pour un MEMO, je peux le simuler en faisant - Code:
-
text_select 10,1,count(10)*100 x$ = select_read$(10) mais cela ne marche pas avec les LIST et DLIST. Est-ce qu'on pourrait imaginer une fonction du genre TEXT_READ_ALL$(objet) et qui marcherait sur les objets, LIST et DLIST. EDIT En Delphi, pour un memo, c'est la propriété .Text qui retourne cela. Et pour listbox, c'est la propriété .Items.Text pour le même effet. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Surlignage de texte sélectionné dans un mémo Lun 13 Déc 2010 - 21:23 | |
| D'un autre côté on peut le simuler facilement (objet n): - Code:
-
x$="": FOR i%=1 TO COUNT(n): x$=x$+ITEM_READ$(n,i%)+CHR$(13)+CHR$(10): NEXT i% | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Surlignage de texte sélectionné dans un mémo Mar 14 Déc 2010 - 0:49 | |
| Oui, d'accord. Mais de la même manière, on peut aussi, sans avoir la fonction count(), faire ainsi: - Code:
-
' x$="": FOR i%=1 TO COUNT(n): x$=x$+ITEM_READ$(n,i%)+CHR$(13)+CHR$(10): NEXT i% label fin dim i%, x$ i% = 1 x$ = "" on_error_goto fin while 1<2 x$=x$+ITEM_READ$(n,i%)+CHR$(13)+CHR$(10) end_while fin: off_error_goto
Il y a souvent possibilité de faire "sans". D'ailleurs, dans mon post, j'ai donné une solution pour contourner cela, pour un memo. Cela ne marche pas bien sûr pour une list ou une dlist. Je crois qu'une fonction générale serait très utile, d'autant qu'au niveau Delphi, ces fonctions existent et cela ne devrait pas être trop complexe de donner accès à ces propriétés via une fonction Panoramic. Mais bien sûr, il appartient à Jack de confirmer ou infirmer ce que je dis, car je "suppose" que Panoramic implémente son memo par le memo de Delphi, ainsi que sa list par la listbox de Delphi, mais je ne peux évidemment pas en être certain. Ceci dit, as-tu les mêmes expériences avec le surlignage des zones sélectionnées par programme, dans un mémo ? Car le surlignage à la souris ou au clavier, ça marche bien ! EDIT D'ailleurs, je voudrais rajouter un point sur les choses à signaler: la documentation de la commande SELECT_TEXT n'est toujours pas correcte, car il y a toujours inversion entre la position de début et la longueur. Cette fonction marche ainsi: - Code:
-
SELECT_TEXT objet,position_debut,nombre_de_caracteres Juste un petit détail à rectifier... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Surlignage de texte sélectionné dans un mémo Mar 14 Déc 2010 - 15:02 | |
| Le surlignage par programme je n'ai pas réussi non plus, ça ne marche pas. Et je crois que j'avais remarqué (et signalé) l'erreur dans la doc pour le Select_Text (paramètres inversés). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Surlignage de texte sélectionné dans un mémo Mar 14 Déc 2010 - 15:20 | |
| C'est vrai, tu avais signalé ce problème de la doc, mais Jack avait dit que cela était rectifié. Mais, avec la version 0.9.21, il y a toujours ce problème. ET comme tu l'as constaté, le surlignage du texte sélectionné par SELECT_TEXT ne marche pas, bien que le texte soit correctement sélectionné.
Mais au-delà de cette anomalie, légère certes, ma suggestion proposait une nouvelle fonction commune aux memo, list et dlist. Et l'intérêt est est alors plus grand pour list et dlist car on ne peut pas leur appliquer ma petite astuce pour sélectionner l'ensemble du texte comme dans un mémo puisque la sélection ne leur est pas applicable. Dans le cas des list et dlist, il n'y a vraiment pas d'autre solution que celle de cumuler ligne par ligne avec des CR LF afin d'obtenir un string du texte complet - vraiment dommage car Delphi donne une propriété qui fait cela d'un seul coup. | |
| | | Contenu sponsorisé
| Sujet: Re: Surlignage de texte sélectionné dans un mémo | |
| |
| | | | Surlignage de texte sélectionné dans un mémo | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |