[Delphi] RichEdit, racourcit clavier et Menu !

RichEdit, racourcit clavier et Menu ! [Delphi] - Programmation

Marsh Posté le 30-12-2001 à 03:34:41    

Voilà, j'ai un petit problème et j'arrive pas à trouver de solution élégante...
 
J'ai un composant RichEdit que j'utilise comme une sorte de WordPad. J'ai également créé un menu "Edition" assez classique mais au moment ou j'ajoute des racourcit claviers cela ne vas plus du tout.
 
J'explique, comme vous le savez par défaut le composant gère tout seul les évènements Ctrl+X, Ctrl+C, Ctrl+V, Suppr et autres Ctrl+A (couper, copier, coller, effacer et sélectionner tout). Seulement voilà, quand dans mon menu j'associe un élément du menu avec un racourcit clavier, Delphi prend celui-ci en compte et donc cela ne marche plus.
J'ai réussit sans mal à re-faire la majorité des fonctions puisque Delphi et le composant RichEdit comportent les procédures adéquat (telles que SelectAll et CopyToClipboard), mais pour le Suppr c'est la merde ! Je suis certain qu'il y as un moyen de pouvoir assigner un racourcit clavier à un menu sans que celui-ci prennent le "pouvoir"...
 
Merci d'avance.


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 03:34:41   

Reply

Marsh Posté le 30-12-2001 à 10:39:25    

il fait quoi ton suppr?

Reply

Marsh Posté le 30-12-2001 à 10:39:25    

Moi, pour mes soft, je me suis refais les fcts de couper/copier/coller qui marchent pour tous les composants qui contiennet du texte (memo, edit, richedit, combobox) etc...

 

[edtdd]--Message édité par rufo--[/edtdd]

Reply

Marsh Posté le 30-12-2001 à 12:56:02    

Dans ton menu les raccourcis sont des raccourcis standards (Ctrl+C,....) ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 30-12-2001 à 20:14:04    

rufo : le Suppr devrais avoir un fonctionnement classique, cad effacer le texte sélectionné si il y en as un ou supprimer le caractère suivant celui ou est le currseur si il n'y as pas de texte sélectioné.
Le pb est que j'ai facilement reprogrammé la pluspart des fonctions (copytoclipboard, pastefromclipboard...) mais le Suppr est pas simple... Surtout si le currseur est en fin de ligne et qu'il doit faire remonter la ligne suivante...
 
[SDF]Poire : vi c la le pb ! Si je ne met pas de raccourcit sur les menus tout fonctionne exactement comme je le voudrais (c intégré au composant quoi...), par contre quand j'associe le raccourcit, c celui-ci qui prend la main et c pas cool... :sweat:


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 20:19:26    

et si lors de l'action de la touche de raccourci tu envoie le pressage de touche "suppr" via un message Windows au TMemo/TEdit, ça marche pas ? (note que si ça marche pas ça fera peut-être une boucle sans fin :D, mais tu peux tj essayer)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-12-2001 à 21:05:52    

Bruce a écrit a écrit :

 
 
[SDF]Poire : vi c la le pb ! Si je ne met pas de raccourcit sur les menus tout fonctionne exactement comme je le voudrais (c intégré au composant quoi...), par contre quand j'associe le raccourcit, c celui-ci qui prend la main et c pas cool... :sweat:  




C ptet pas cool mais C 1 peu normal.... en fait tu veux jute qu'il y ait l'affichage du raccourci dans le menu mais qu'il ne fasse rien ?
(G un doute sur le fait que G bien tout compris...)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 30-12-2001 à 22:28:11    

antp a écrit a écrit :

et si lors de l'action de la touche de raccourci tu envoie le pressage de touche "suppr" via un message Windows au TMemo/TEdit, ça marche pas ? (note que si ça marche pas ça fera peut-être une boucle sans fin :D, mais tu peux tj essayer)  




 
Non, ça c sûr ça marchera pas ;)


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 22:28:46    

[SDF]Poire a écrit a écrit :

 
C ptet pas cool mais C 1 peu normal.... en fait tu veux jute qu'il y ait l'affichage du raccourci dans le menu mais qu'il ne fasse rien ?
(G un doute sur le fait que G bien tout compris...)  




 
Tout à fait ! C exactement ça... Il y as certainement un moyen d'afficher le raccourcit sans qu'il prenne la main... non ? :)


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 22:35:57    

Bruce a écrit a écrit :

 
 
Tout à fait ! C exactement ça... Il y as certainement un moyen d'afficher le raccourcit sans qu'il prenne la main... non ? :)  




Tout est possible :D Je te cherche ça...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 30-12-2001 à 22:35:57   

Reply

Marsh Posté le 30-12-2001 à 22:38:57    

[SDF]Poire a écrit a écrit :

 
Tout est possible :D Je te cherche ça...  




 
Marci ! :D


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 22:42:21    

j'ai trouvé ! :sol:
bon c'est vraiment de la bidouille, mais tu peux tj essayer :
déjà n'associe aucun shortcut à l'item (puisque non nécessaire)
sur ta form, tu fais alt+f12 ("view as text" ), là tu cherches la déclaration de ton item ou action (si tu utilises des actionlist, ce qui est nettement plus propre que de coder directement tout dans les tmenuitem).
ensuite tu as par ex:
 
     object aaa1: TMenuItem
        Caption = 'Copier CTRL+V'
 
(ici donc le ctrl+v est pas aligné, il est collé au label)
suffit de changer ça en :
 
     object aaa1: TMenuItem
        Caption = 'Copier'#9'CTRL+V'
 
et là le ctrl+v se retrouvera aligné avec les autres shortcuts

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-12-2001 à 22:53:00    

antp a écrit a écrit :

j'ai trouvé ! :sol:
bon c'est vraiment de la bidouille, mais tu peux tj essayer :
déjà n'associe aucun shortcut à l'item (puisque non nécessaire)
sur ta form, tu fais alt+f12 ("view as text" ), là tu cherches la déclaration de ton item ou action (si tu utilises des actionlist, ce qui est nettement plus propre que de coder directement tout dans les tmenuitem).
ensuite tu as par ex:
 
     object aaa1: TMenuItem
        Caption = 'Copier CTRL+V'
 
(ici donc le ctrl+v est pas aligné, il est collé au label)
suffit de changer ça en :
 
     object aaa1: TMenuItem
        Caption = 'Copier'#9'CTRL+V'
 
et là le ctrl+v se retrouvera aligné avec les autres shortcuts  
 
 




Une tabulation :heink:  ? T sur que ça marche avec n'importe quelle longueur pour les titres des menus ?
 
edit : Effectivement ça marche... Mais C pas super pratique nivo conception....

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 30-12-2001 à 23:09:15    

Pas con, je vais essayer.


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 23:15:39    

Bon, en effet ça marche mais voilà cela me pose un autre pb que vous ne pouviez pas deviner :)
 
Voilà, le but de cette app, c de faire un guide (tutorial) de Delphi, et je suis parti dans l'idée de faire un "clone" de WordPad en quelques cours. Bref pas simple d'expliquer aux newbies qu'il faut mettre un #9 pour que ça marche...
 
Donc autre question, existe-t-il un moyen de re-coder le Suppr sans se prendre la tête ? Un peu comme les autres fonctions qui sont super simples à faires !


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 30-12-2001 à 23:27:46    

Bruce a écrit a écrit :

Bon, en effet ça marche mais voilà cela me pose un autre pb que vous ne pouviez pas deviner :)
 
Voilà, le but de cette app, c de faire un guide (tutorial) de Delphi, et je suis parti dans l'idée de faire un "clone" de WordPad en quelques cours. Bref pas simple d'expliquer aux newbies qu'il faut mettre un #9 pour que ça marche...
 
Donc autre question, existe-t-il un moyen de re-coder le Suppr sans se prendre la tête ? Un peu comme les autres fonctions qui sont super simples à faires !  




Essaye CustomRichEdit.SelText := '';


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 31-12-2001 à 02:54:37    

[SDF]Poire a écrit a écrit :

 
Essaye CustomRichEdit.SelText := '';  




 
Non, là tu oublie le plus dur, effacer le texte sélectionné c super simple :

Code :
  1. RichEdit1.ClearSelection;


 
Mais là ou ça deviens plus complexe c quand tu n'as pas de texte sélectionné auquel cas le Suppr efface le caractère suivant la position du cursseur et si il est en fin de ligne supprime le retour chariot...


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 31-12-2001 à 09:45:37    

Bruce a écrit a écrit :

 
 
Non, là tu oublie le plus dur, effacer le texte sélectionné c super simple :

Code :
  1. RichEdit1.ClearSelection;


 
Mais là ou ça deviens plus complexe c quand tu n'as pas de texte sélectionné auquel cas le Suppr efface le caractère suivant la position du cursseur et si il est en fin de ligne supprime le retour chariot...  




 
ben, il suffit de récupérer la position du curseur (selstart pour avoir la position en nb de caractères, CaractPos.x et .y pour avoir la ligne et la colonne) et après, tu utilises en fct de la position du curseur un Copy(chaine, debut, long) adhéquat :)

Reply

Marsh Posté le 31-12-2001 à 09:46:48    

rem : si tu as mis à true la propriété wrap, ça va être plus simple pluis que tu pourras remonter toute la ligne suivante et non pas le mot s'il tient sur la ligne précédente...

Reply

Marsh Posté le 31-12-2001 à 11:02:37    

if RichEdit1.SelLength = 0 then
    RichEdit1.SelLength := 1;
   
  RichEdit1.ClearSelection;

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 31-12-2001 à 16:22:18    

[SDF]Poire a écrit a écrit :

if RichEdit1.SelLength = 0 then
    RichEdit1.SelLength := 1;
   
  RichEdit1.ClearSelection;  
 
 




 
Bravo ! Excellent, ct tout con et j'y avais même pas pensé :)
 
 :jap:  :jap:  :jap:


---------------
A+++ Bruce - http://www.bheller.com
Reply

Marsh Posté le 01-01-2002 à 04:48:42    

Bruce a écrit a écrit :

 
 
Bravo ! Excellent, ct tout con et j'y avais même pas pensé :)
 
 :jap:  :jap:  :jap:  




Bonne Année !!!  :benetton:  
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed