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
» Button_picture
par pascal10000 Aujourd'hui à 11:41

» Pourquoi le compilateur stagne
par Minibug Aujourd'hui à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Aujourd'hui à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Aujourd'hui à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Aujourd'hui à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Hier à 17:27

» Mah-Jong européen new-look
par Minibug Mar 12 Déc 2017 - 22:31

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Sélection dans un Memo

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



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

MessageSujet: Sélection dans un Memo   Jeu 4 Sep 2014 - 20: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 : 395
Date d'inscription : 06/01/2012

MessageSujet: Re   Jeu 4 Sep 2014 - 23: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 0: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   Ven 5 Sep 2014 - 0: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 1: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.free-boards.net/t1705-editeur-de-textes?highlight=%E9diteur
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 1: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 - 4: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 15: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 : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 16: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 - 17: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 18: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 : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 18: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 : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 19: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 : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 20: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Ven 5 Sep 2014 - 20: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 : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 5 Sep 2014 - 23: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Sam 6 Sep 2014 - 0: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 - 1: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 : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Sélection dans un Memo   Sam 6 Sep 2014 - 1: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
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Texte impossible dans Outlook Express
» Comment faire une sélection multiple
» Liens inactifs dans Outlook Express
» [Résolu] Affichage images dans un mail
» compteur php dans page générée par e-anim

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: