FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Calculatrice
par papydall Hier à 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Hier à 21:32

» Planétarium virtuel.
par Pedro Alvarez Hier à 17:07

» Demande pour Jack concernant PanExpress
par Minibug Hier à 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Mer 19 Sep 2018 - 15:58

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Sélection dans un Memo

Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Sélection dans un Memo   Jeu 4 Sep 2014 - 19:10

J'ai un trou de mémoire ou bien ce n'est pas prévu ?
- Je sélectionne une zone de texte dans un MEMO
- Je peux récupérer le texte sélectionné: SELECT_READ$(N)
- Mais je voudrais savoir où se trouve cette sélection dans le Memo N: numéro de ligne et indice dans la ligne
Y a-t'il un moyen ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 400
Date d'inscription : 06/01/2012

MessageSujet: Re   Jeu 4 Sep 2014 - 22:48

En trichant un peu, voici ce que j'ai trouvé pour la ligne :

Code:
combo 10:button 20:left 20,200:label affiche
item_add 10,"youpi":item_add 10,"zut"
on_click 20, affiche
end
affiche:
message item_index(10)
select_text 10,1,999
message select_read$(10)
return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Jeu 4 Sep 2014 - 23:11

Merci Froggy One, c'est évidemment une solution qui peut être satisfaisante pour un Combo, mais malheureusement la fonction Item_Index() n'est pas admise pour un Memo, ce qui est bien dommage...
On peut cliquer et sélectionner n'importe où dans le Memo, mais on ne peut pas savoir (par programme) où on a cliqué scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Sélection dans un Memo   Jeu 4 Sep 2014 - 23:42

Bonsoir,
Avec mes excuses, je peux lire le forum, mais je ne code pas en ce moment.

J'ai plusieurs fois apporté la solution pour retrouver l'emplacement du curseur, ou trouver la sélection d'une chaîne dans un memo.

En premier lieu si c'est une sélection qu'on veut conserver le contenu, il faut évidemment la récupérer dans une variable.

Ensuite on copie dans le presse papier un caractère dont on est sur qu'il sera seul (qu'il n'y aura pas ede doublon), et on le colle avec CLIPBOARD_PASTE dans le memo. Dans le contenu du memo, on cherche ligne par ligne ce caractère, et on a ainsi la ligne.

Il faut évidemment en lisant ligne par ligne le memo jusqu'au caractère, avoir un compteur qui ajoute le nombre de lettres (avec LEN() ) et ajouter 2 pour chaque ligne qui précède la dernière qui sont les retour-chariot. On ajoute la position de la ligne du caractère pour pouvoir avec CARET_POSITION retirer le caractère de repérage, et remettre à la place le texte qui convient.

Si on est sur que la sélection est unique, il est évidemment plus simple de lire ligne par ligne pour retrouver celle-ci.

Edit: je croyais répondre à froggy-One, je n'avais pas vu que la question était de JL35. Alors JL35, on vieilli? Je crois que la première fois que c'était proposé, ce fût pour un éditeur que tu avais fait avec une sortie sur un RichtEdit, et que tu voulais mettre des attribus sur la partie sélectionnée. Very Happy
Revenir en haut Aller en bas
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 0:05

Bonsoir cosmos,
Au moins pour ça tu as raison, on vieillit !
- Pour la sélection, aucun problème pour la récupérer avec Select_Read$
- Quant à retrouver l'endroit par programme, je vais étudier ta solution qui a l'air intéressante...

Et maintenant que tu le dis, ça me rappelle quelque chose cet éditeur au format rtf, il faut que je regarde ça de plus près.

En tout cas, merci à toi de réveiller mes vieux neurones ! qui ne vont d'ailleurs pas tarder à se rendormir... Sleep

PS j'ai retrouvé, c'était là: http://panoramic.1fr1.net/t1705-editeur-de-textes?highlight=%E9diteur
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 0:16

La fonction CARET_POSITION(N) donne la position du curseur dans un mémo.
La fonction SELECT_READ$(N) retourne le texte sélectionné.
La commande SELECT_TEXT N,P,C sélectionne C caractères dans le mémo N, à partir de la position N.

Voilà ce qu'on peut faire en Panoramic.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 3:40

Effectivement Klaus, mais la question posée est:
Citation :
Mais je voudrais savoir où se trouve cette sélection dans le Memo N: numéro de ligne et indice dans la ligne
Celà ne donne pas le numéro de ligne, et la ligne entière.

Mais si cela a pour but seulement de mettre des attributs, il suffit comme tu le dis, se servir de select_read$ dans une variable, d'y ajouter les attributs de part et d'autre, mettre dans le presse papier cette variable modifiée avec CLIPBOARD_STRING_COPY , et de coller, ce qui remplacera la sélection précédente, et là il n'est plus nécessaire de savoir de quelle ligne il est question. Çà dépend ce que l'on veut faire.

Revenir en haut Aller en bas
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 14:21

Effectivement, il s'agit d'ajouter des attributs de part et d'autre d'une portion sélectionnée, éventuellement sur plusieurs lignes, et avec vos tuyaux je vais pouvoir le faire (je l'avais déjà fait dans l'éditeur, mais je ne m'en souvenais plus, merci cosmos).

@Klaus,
Sauf que... sauf erreur de ma part, le CARET_POSITION(n) ne marche pas pour un MEMO, ce serait trop facile, seulement pour un LIST, donc il faut trouver une astuce.
C'est un peu curieux d'ailleurs, et gênant, pour un Memo on peut positionner: Caret_Position n,p mais pas lire la position: Caret_Position(n)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 15:23

Code:
label clic,cpt
memo 1
on_click 1,clic
timer 2
timer_off 2
On_timer 2,cpt
end


clic:
  if count(1)>0
     timer_interval 2,10
     timer_on 2
  end_if
return


cpt:
  chercheline()
return

sub chercheline()
    dim_local x%,a$,b$,dep%
    if mouse_left_up(1)=1
       timer_off 2
       a$=select_read$(1)
       for x%=1 to count(1)
          b$=item_read$(1,x%)
          dep%=instr(b$,a$)
          if dep%>0
             message "ligne : "+str$(x%)+chr$(13)+"Position : "+str$(dep%)
          end_if
       next x%
    end_if
end_sub
j' ai çà à l' arrache en cinq minutes, j' ai pas plus, je dois repartir.... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 16:21

caret_position(n) Jack l'avait fait à ma demande, pour un EDIT. Il avait bien précisé que pour l'instant cette instruction ne fonctionnait pas pour un memo.
Revenir en haut Aller en bas
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 17:17

@cosmos, ben oui, et c'est dommage.

@ygeronimi,
Évidemment, mais c'est la solution de facilité, et ça ne me convient pas.
- d'abord il y a un timer, et ceux-là je les évite autant que je peux.
- ensuite, et surtout, si tu as plusieurs occurences de la sélection dans ton memo, tu vas toujours t'arrêter sur la première, et pas forcément sur celle qui a été sélectionnée !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 17:59

Je viens de faire une nouvelle version de KGF.dll:
KGF.dll V3.41 du 05/09/2014

Il y a une nouvelle fonction qui fait exactement ce que tu cherches: trouver le numéro de ligne et de colonne du début de la sélection (ou du curseur), dans un mémo ou d'ailleurs dans un edit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 18:51

Je ne vois pas ou est le pb avec mon timer, 
il démarre au clic sur le memo (donc au début de la sélection) 
et s' arrête avec la fin de la sélection du texte.
le tout pour savoir à quel moment je récupère par select_read$(N).

Bon, ca ne plait pas, j' le remet dans ma culotte... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 19:18

une chose que tu peux faire

1/ sélection du texte
2/ récupération par clipboard_string_copy$ select_read$(N)
3/ tu effaces la sélection
4/ tu traites la sélection en la récupérant par clipboard_string_paste$ en la plaçant dans une variable t$
5/ tu remets le bébé dans le presse papier par clipboard_string_copy$ t$
6/ tu colle le bébé et l' eau du bain dans le Memo par clipboard_paste N

Si tu n' as pas changé l' emplacement du curseur, le collage se fait à son emplacement... Laughing

Pas de timer, pas de dll... cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 19:47

Eh, mais c'est exactement ce que je fais, et que je faisais d'ailleurs dans l'éditeur cité plus haut où j'ai récupéré le sous-programme adéquat, c'était une astuce de cosmos (rendons à César...) que j'avais oublié.
Le problème n'était pas le timer, même si j'évite quand je peux, c'était de déterminer l'emplacement exact de la sélection.
Et c'est maintenant résolu, avec un peu d'acrobatie, en panoramic.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 22:35

je suis curieux de voir comment tu t' y es pris... scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 23:00

Pas de mystère, voilà le s/p qui fait le boulot (mm% est le memo):
Code:

Poscurs:
' Calcul de la position du curseur (ligne et indice) dans le Memo (emplacement cliqué)
CLIPBOARD_STRING_COPY CHR$(255): CLIPBOARD_PASTE mm%: CLIPBOARD_STRING_COPY ""
curs% = 0
FOR i% = 1 TO COUNT(mm%)
    a$ = ITEM_READ$(mm%, i%)
    k% = INSTR(a$, CHR$(255))
    IF k% > 0
        a$ = LEFT$(a$, k%-1)+MID$(a$,k%+1,200)
        ITEM_DELETE mm%,i%: ITEM_INSERT mm%, i%, a$
        ligcur% = i%: ' <----- ligne du clic
        poscur% = k%: ' <----- index du clic dans la ligne
        curs% = curs% + k%-1
        EXIT_FOR
    END_IF
    curs% = curs% + LEN(a$) + 2: ' index absolu (par rapport au début du memo)
NEXT i%
RETURN
il manque l'environnement, mais l'essentiel est là, et ça marche. (je mettrai le programme complet dans une autre rubrique: éditeur html)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Sélection dans un Memo   Sam 6 Sep 2014 - 0:00

Déjà au départ, ça fait plaisirs de pouvoir poster avec les outils des attributs. J'avais ces jours-ci aucun icône pour pour faire le post, avec un cm de hauteur pour le memo (sans compter le temps fou pour pouvoir avoir une page).

Cela dît:
JL35 a écrit:
a$ = LEFT$(a$, k%-1)+MID$(a$,k%+1,200)

Aujourd'hui, tu as meilleurs temps de mettre:
a$ = LEFT$(a$, k%-1)+RIGHT_POS$(a$,k%+1)

Surtout que personnellement je dépasse facilement les 200 caractères.
Revenir en haut Aller en bas
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Sam 6 Sep 2014 - 0:10

Bien sûr tu as raison cosmos, j'ai du mal à me défaire de mes vieilles habitudes, du temps où cette instruction nous faisait défaut.
Il faut que je m'y mette, c'est plus rigoureux comme ça. Mais là, dans le memo, c'est une seule ligne, on ne risque pas de dépasser les 200.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Sélection dans un Memo   

Revenir en haut Aller en bas
 
Sélection dans un Memo
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment faire une sélection multiple
» Liens inactifs dans Outlook Express
» Composition de trains dans RRTC 7.0 B1 Gold
» Insertion d'animation dans un php joomla
» Insérer des images dans vos sujets.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: