Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 17:51 | |
| Bonsoir, Lancez ce petit programme, vous allez comprendre... - Code:
-
DIM i,cpt1,cpt2,a$ LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 MEMO 1:HEIGHT 1,50: LEFT 1,50 a$="1234"+CHR$(13)+CHR$(10)+"5678"
PRINT_LOCATE 10,60 : PRINT "La chaine : '"+a$+"' fait "+str$(LEN(a$))+" caractères -> 8+CR+LF..." cpt1=len(a$) ITEM_ADD 1,a$
' on additionne la "totalité" des caractères... FOR i=1 TO COUNT(1) : cpt2 = cpt2 + LEN(ITEM_READ$(1,i)) : NEXT i PRINT_X_LOCATE 10: PRINT "La somme des items nous donne " + STR$(cpt2) + " caractères"
MESSAGE "On sélectionne les "+STR$(cpt2)+" caractères de notre memo..."
SELECT_TEXT 1,1,cpt2 PRINT_X_LOCATE 10: FONT_BOLD 0:FONT_COLOR 0,255,0,0:PRINT "Piégeux... non ? ;)" PRINT_X_LOCATE 10: PRINT "En fait la sélection a pris en compte le CRLF..."
END | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 18:08 | |
| La démonstration est magistrale | |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 18:29 | |
| N'est-ce pas ? Ce qui est gênant pour l'utilisation de SELECT_TEXT Il manque une fonction qui comptabilise correctement le véritable contenu de notre Memo... Sur un memo, les raccourcis CTRL+C, CTRL-V et CTRL-X fonctionnent mais pas le CTRL-A... Donc j'ai voulu mettre en place un ON_KEY_DOWN sur un memo puis faire un SELECT_TEXT si KEY_DOWN_SPECIAL=3 et KEY_DOWN_CODE=65... Je pourrais très bien employer la méthode bourrin (SELECT_TEXT n,1,65535) mais j'ai cherché à faire quelque chose de "propre"... | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 18:53 | |
| Et qu'est-ce que tu penses de cela ? - Code:
-
DIM i,cpt1,cpt2,a$ LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 MEMO 1:HEIGHT 1,50: LEFT 1,50 a$="1234"+CHR$(13)+CHR$(10)+"5678"
PRINT_LOCATE 10,60 : PRINT "La chaine : '"+a$+"' fait "+str$(LEN(a$))+" caractères -> 8+CR+LF..." cpt1=len(a$) ITEM_ADD 1,a$
' on additionne la "totalité" des caractères... FOR i=1 TO COUNT(1) : cpt2 = cpt2 + LEN(ITEM_READ$(1,i)) : NEXT i cpt2 = cpt2 + (COUNT(1)-1)*2 PRINT_X_LOCATE 10: PRINT "La somme des items nous donne " + STR$(cpt2) + " caractères"
MESSAGE "On sélectionne les "+STR$(cpt2)+" caractères de notre memo..."
SELECT_TEXT 1,1,cpt2 PRINT_X_LOCATE 10: FONT_BOLD 0:FONT_COLOR 0,255,0,0:PRINT "Ah;;;;;;;;;; ;)" PRINT_X_LOCATE 10: PRINT "Cette fois, la sélection compte bien le CRLF..."
END | |
|
Invité Invité
| Sujet: Re: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 19:03 | |
| Bonsoir; Je suis étonné par votre réaction. Cela me paraît normal! C'est également le cas en AutoIt. Je pensais que vous le saviez tous. |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Remarque sur l'objet MEMO Mer 8 Fév 2012 - 20:37 | |
| Ta solution marche Klaus, car tu comptabilises systématiquement des CRLF pour chaque item... on pourrait faire la méthode bourrin avec un paramètre de taille à 65535... (tout comme sur le LEFT$ par ex...) Quoiqu'il en soit, cela ne me parait pas très logique : - Soit on considère l'objet mémo comme un champs texte: Les commandes ITEM_### portent à confusion, on s’attendrait à ne les rencontrer que pour un objet de type (D)LIST ou tout autre objet manipulant véritablement des items... Seule PRINT et tous autres commandes travaillant sur des chaines de caractères devraient être associées à un memo. il faudrait aussi adapter la commande LEN() pour retourner la longueur totale du champs. - Soit l'ITEM_ADD est approprié mais dans ce cas, le CR+LF devrait être filtré et ne devrait pas provoquer de saut de ligne (mais dans ce cas, nous n'avons plus véritablement un memo )... | |
|
Contenu sponsorisé
| Sujet: Re: Remarque sur l'objet MEMO | |
| |
|