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 |
|
|
| CLIC sur un memo | |
| | Auteur | Message |
---|
Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: CLIC sur un memo Dim 20 Jan 2019 - 2:46 | |
| Je réagi car le forum ne bouge pas. J'avais déjà publié un programme avec la réaction d'un clic sur un memoRich. C'est une méthode que j'utilise quotidiennement; mais de temps en temps, il y a un problème. Comme j'insère un caractère à la position du curseur pour retrouver l'emplacement, parfois le rétablissement de celui-ci échoue. J'ai trouvé une autre façon de savoir sur quoi on clique. c'est de voir autour du caret_position d'un memo, si le mot recherché est présent pour mettre une info, ou procéder à une commande directe J'ai repris la fable qui était toute prête: le Corbeau et le Renard. - Code:
-
' ******************************************************************************* ' * action d'un clic dans un memo, memoRich, ou autre * ' * cette sub permet de rechercher si un clic de souris dans un Memo ; MemoRich * ' * de voir si le texte en dessous est une commande préparée ou autre * ' ******************************************************************************* LABEL controle
width 0,screen_x : height 0,800 : font_size 0,12 : font_name 0, "Times New Roman" :' font_bold 0 memo 10 : width 10,width_client(0) : height 10,450 : on_click 10,controle : bar_both 10 remplissage() memo 11 : width 11,300:top 11,460:color 11,230,230,200
END :' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
controle: controle() : return
SUB controle() ' on prend dans l'exemple les caractères de délimitations: "[" et "]" clear 11 dim_local j%,tx$,a$, cur% , let$ , i% cur% = caret_position(10) i% = cur%- 10 : if i% < 1 then i% = 1 :' 50 semble suffisent tx$ = text$(10) : ' récupération du texte du memo if cur% > 1 for j% = cur% to i% step -1 let$ = mid$(tx$,j%,1) if let$ = chr$(10) then exit_for if let$ = "]" then exit_for :' il n'y a pas de délimiteur : "[' devant, donc ne correspond à rien if let$ = "[" :' trouvé le devant tx$ = right_pos$(tx$,j%) for i% = 1 to cur% + 100 let$ = mid$(tx$,i%,1) if let$ = chr$(13) then exit_for : ' sortie de la ligne if let$ = "]" tx$ = left$(tx$,i%) traitement(tx$) exit_sub end_if next i% end_if next j% end_if END_SUB
SUB traitement(tx$) clear 11 tx$ = upper$(tx$) if tx$ = "[RENARD]" then item_add 11,"Mot Renard à définir " if tx$ = "[CORBEAU]" then item_add 11,"Oiseau de couleur noir" if tx$ = "[PHENIX]" then item_add 11,"Autre oiseau rare" END_SUB
SUB remplissage() item_add 10," Le Corbeau et le Renard" item_add 10," " item_add 10," Maître [Corbeau] sur un [arbre] perché," item_add 10," Tenait en son bec un fromage." item_add 10," Maître [Renard] par l’odeur alléché" item_add 10," Lui tint à peu près ce langage :" item_add 10," Et bonjour, Monsieur du [Corbeau]." item_add 10," Que vous êtes joli ! que vous me semblez beau !" item_add 10," Sans mentir, si votre ramage" item_add 10," Se rapporte à votre plumage," item_add 10," Vous êtes le [Phenix] des hôtes de ces bois." item_add 10," À ces mots le [Corbeau] ne se sent pas de joie :" item_add 10," Et pour montrer sa belle voix," item_add 10," Il ouvre un large bec, laisse tomber sa proie." item_add 10," Le [Renard] s’en saisit, et dit : Mon bon Monsieur," item_add 10," Apprenez que tout flatteur" item_add 10," Vit aux dépens de celui qui l’écoute." item_add 10," Cette leçon vaut bien un fromage sans doute." item_add 10," Le [Corbeau] honteux et confus" item_add 10," Jura, mais un peu tard, qu’on ne l’y prendrait plus." END_SUB | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: CLIC sur un memo Dim 20 Jan 2019 - 12:45 | |
| Je viens d'apporter un supplément: branchement à un ancre. Si on clic par exemple sur "[GO moral] dans l'exemple, le curseur va vers le branchement. - Code:
-
' ******************************************************************************* ' * action d'un clic dans un memo, memoRich, ou autre * ' * cette sub permet de rechercher si un clic de souris dans un Memo ; MemoRich * ' * de voir si le texte en dessous est une commande préparée ou autre * ' ******************************************************************************* LABEL controle
width 0,600 : height 0,500 : font_size 0,12 : font_name 0, "Times New Roman" :' font_bold 0 memo 10 : width 10,width_client(0) : height 10,200 : on_click 10,controle : bar_both 10 remplissage() memo 11 : width 11,300:top 11,210:color 11,230,230,200
END :' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
controle: controle() : return
SUB controle() ' on prend dans l'exemple les caractères de délimitations: "[" et "]" clear 11 dim_local j%,tx$,a$, cur% , let$ , i% cur% = caret_position(10) i% = cur%- 10 : if i% < 1 then i% = 1 :' 50 semble suffisent tx$ = text$(10) : ' récupération du texte du memo if cur% > 1 for j% = cur% to i% step -1 let$ = mid$(tx$,j%,1) if let$ = chr$(10) then exit_for if let$ = "]" then exit_for :' il n'y a pas de délimiteur : "[' devant, donc ne correspond à rien if let$ = "[" :' trouvé le devant tx$ = right_pos$(tx$,j%) for i% = 1 to cur% + 100 let$ = mid$(tx$,i%,1) if let$ = chr$(13) then exit_for : ' sortie de la ligne if let$ = "]" tx$ = left$(tx$,i%) traitement(tx$) exit_sub end_if next i% end_if next j% end_if END_SUB
SUB traitement(tx$) clear 11 tx$ = upper$(tx$) if tx$ = "[RENARD]" then item_add 11,"Mot Renard à définir " if tx$ = "[CORBEAU]" then item_add 11,"Oiseau de couleur noir" if tx$ = "[PHENIX]" then item_add 11,"Autre oiseau rare" if tx$ = "[GO MORAL]" then go(tx$) if tx$ = "[GO TITRE]" then go(tx$)
END_SUB ' --------------------------- SUB go(tx$) : ' branchement dim_local i%,a$ tx$ = right_pos$(tx$,5) : tx$ = ">"+left$(tx$,len(tx$)-1)+"<" if count(10) > 0 for i% = 1 to count(10) a$ = item_read$(10,i%) if instr(upper$(a$),tx$) > 0 item_delete 10,i% item_insert 10,i%,a$ end_if next i% end_if END_SUB ' --------------------------- SUB remplissage() dim_local a$ item_add 10," Le Corbeau et le Renard" item_add 10," [GO moral] >TITRE<" item_add 10," Maître [Corbeau] sur un [arbre] perché," item_add 10," Tenait en son bec un fromage." item_add 10," Maître [Renard] par l’odeur alléché" item_add 10," Lui tint à peu près ce langage :" item_add 10," Et bonjour, Monsieur du [Corbeau]." item_add 10," Que vous êtes joli ! que vous me semblez beau !" item_add 10," Sans mentir, si votre ramage" item_add 10," Se rapporte à votre plumage," item_add 10," Vous êtes le [Phenix] des hôtes de ces bois." item_add 10," À ces mots le [Corbeau] ne se sent pas de joie :" item_add 10," Et pour montrer sa belle voix," item_add 10," Il ouvre un large bec, laisse tomber sa proie." item_add 10," >MORAL<" item_add 10," Le [Renard] s’en saisit, et dit : Mon bon Monsieur," item_add 10," Apprenez que tout flatteur" item_add 10," Vit aux dépens de celui qui l’écoute." item_add 10," Cette leçon vaut bien un fromage sans doute." item_add 10," Le [Corbeau] honteux et confus" item_add 10," Jura, mais un peu tard, qu’on ne l’y prendrait plus." item_add 10," [GO titre]" a$ = item_read$(10,1) item_delete 10,1 item_insert 10,1,a$ END_SUB Bonne soirée. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 20 Jan 2019 - 15:29 | |
| C'est une recherche intéressante ! Mais tous ces crochets, ce n'est pas très joli, esthétiquement. Il devrait être possible de s'en passer en faisant un double_clic sur les mots, ce qui les mets en surbrillance ensuite, on élimine l'espace final (RTRIM$()), on obtient le mot en select_read$()..., et pour rediriger vers les >TITRE< etc..., select_text$() et caret_position N,x. Cela devrait marcher sans avoir à mettre des caractères à utilité technique dans le texte qui resterait purement littéraire. Je ne l'ai pas essayé, mais ça devrait marcher. Pour ce qui est de l'immobilité du forum, en ce moment, c'est carrément le vide inter-sidéral ! Est-ce que tout le monde est parti au ski ? (à moins que ce soit la période d'hibernation ?) | |
| | | Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: CLIC sur un memo Dim 20 Jan 2019 - 16:12 | |
| C'est gentil de me répondre.
En réalité je me suis dit que si de temps en temps quelqu"un n'intervenait pas, le forum finira par disparaître.
Tu as tout à fait raison concernant les crochets. C'est un programme que j'ai fait cette nuit, après avoir modifié le mien qui n'a rien avoir avec celui-ci, et j'ai vu que le principe était plus concluant que l'insertion d'un caractère (chr$(7) dans mon cas), et la recherche de ce dernier.
Le problème c'est de délimiter le mot. S'il n'y avait pas les mots composés, l'espace pourrait faire l'affaire. Je n'ai voulu que montrer le principe, et vous laissant libre de réfléchir. On peut ainsi en reculant depuis le curseur, lire dans une table et voir si la portion de devant se trouve dans la table : si dans la boucle on lit: "corb" et dans la table on a "corbeau", alors on peut voir si la suite de "corb" est "corbeau". J'ai mes idées, je vous laisse améliorer le principe.
Bon dimanche. | |
| | | Contenu sponsorisé
| Sujet: Re: CLIC sur un memo | |
| |
| | | | CLIC sur un memo | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |