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
» Détection connexion internet
par JL35 Hier à 22:59

» Le parcours du cavalier sur un échiquier 8 x 8
par pascal10000 Dim 23 Juil 2017 - 13:26

» Casse-tête : Echanger les positions des cavaliers
par papydall Sam 22 Juil 2017 - 19:42

» Compilateur FBPano
par jean_debord Sam 22 Juil 2017 - 10:54

» demande pour recuperer un text speciale
par pascal10000 Ven 21 Juil 2017 - 22:04

» KGF_dll - nouvelles versions
par Klaus Ven 21 Juil 2017 - 14:29

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 RichEditGetInformation 3

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

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: RichEditGetInformation 3   Ven 28 Fév 2014 - 19:38

la position du curseur n' est jamais à 0....

Qu' il y ait 1 caractère ou pas dans le RE, la position est toujours à 1.

Code:
Variables()
Labels()

height 0,400
width 0,600
dll_on "KGF.dll"

Edit 1 :top 1,5 : left 1,5 : on_change 1,change
RE%  = dll_call2("RichEditCreateWithEvent",handle(0),handle(1))
res% = dll_call5("RichEditGeometry",RE%,5,30,500,200)
res%  = dll_call2("RichEditGetInformation",RE%,3)
caption 0,str$(res%)

end

sub variables()
   dim RE%,Change%,res%
end_sub

sub Labels()
   label change
end_sub

Change:
   Detect_curseur()
return

Sub Detect_curseur()
   dim_local cp%,sep%,code%,mot$,yesno%,dep%
   cp% = dll_call2("RichEditGetInformation",RE%,3)
   caption 0,str$(cp%)
End_sub

Si je tape un deuxième caractère, la position devient 2 mais reste 2 si je tape "Retour Arrière" (Effacement du caractère) alors
qu' après le la frappe du premier la position était 1... geek
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 28 Fév 2014 - 23:08

Autre chose :

Code:
dim RE%,Change%,res%
label change

height 0,500
width 0,600
dll_on "KGF.dll"

Edit 1 :top 1,5 : left 1,5 : on_change 1,change

RE%  = dll_call2("RichEditCreateWithEvent",handle(0),handle(1))
res% = dll_call5("RichEditGeometry",RE%,5,30,500,200)
res% = dll_call2("RichEditGetInformation",RE%,3)
res% = dll_call3("RichEditFunction",RE%,11,0)

memo 2 :top 2,235 :left 2,5 : height 2,220 : width 2,200 : bar_vertical 2

end

Change:
' un caractère est tapé au clavier, où est le curseur ?

res% = dll_call2("RichEditGetInformation",RE%,3)
item_add 2,"Position du curseur : "+str$(res%)

' je replace le curseur en position 0, et là surprise,

res% = dll_call3("SelectRichEditText",RE%,0,0)

' il reste après le premier caractère et pas avant
' autre surprise, le curseur va se placer avant le premier caractere mais
' apres la frappe d' un deuxième caractere qui est placé avant le premier et
' le curseur reste apres ce caractere
return

 scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditGetInformation 3   Sam 1 Mar 2014 - 2:33

Tout à fait normal. Tout d'abord, dans la routine "Change", tu remplaces
Code:
res% = dll_call3("SelectRichEditText",RE%,0,0)
par
Code:
res% = dll_call3("SelectRichEditText",RE%,1,0)

En effet, le premier caractère est 1, pas 0. Cependant, si la valeur passée est <1, la DLL corrige automatiquement en mettant 1 de façon interne.

Mais l'explication est la suivante:
lorsque le contenu du RE change, tu forces le retour du curseur devant le premier caractère. Le prochain caractère frappé vient donc s'insérer logiquement DEVANT le premier caractère. Et ainsi de suite.

MAIS:

Je constate que, ce qui est déplacé, est le "point d'insertion" et non réellement de "curseur". Là, j'ai une correction à apporter.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: RichEditGetInformation 3   Sam 1 Mar 2014 - 3:02

Bien - j'ai compris ce qui se passe.

En fait, l'évènement est déclenché AVANT le changement effectif dans le RE !

Donc, on entre dans la routine évènement Panoramic, on positionne le curseur devant le premier caractère, puis on termine la routine évènement. Ce n'est qu'ensuite que le caractère est inséré, donc devant le premier caractère, puis le curseur se trouve logiquement après ce caractère inséré, et donc devant le caractère 2.

Pour gérer cela, tu dois libérer la routine évènement du RE, tout en déclenchant ton traitement tout de suite après. Je te montre ci-après ton code modifié, en utilisant un timer dont tu peux régler le délai, pour déclencher un évènement qui lui, s'effectuera après l'insertion du caractère, et tout marchera bien.
Code:
dim RE%,Change%,res%
label change, delai

height 0,500
width 0,600
dll_on "KGF.dll"

Edit 1 :top 1,5 : left 1,5 : on_change 1,change

RE%  = dll_call2("RichEditCreateWithEvent",handle(0),handle(1))
res% = dll_call5("RichEditGeometry",RE%,5,30,500,200)
res% = dll_call2("RichEditGetInformation",RE%,3)
res% = dll_call3("RichEditFunction",RE%,11,0)

memo 2 :top 2,235 :left 2,5 : height 2,220 : width 2,200 : bar_vertical 2

timer 3 : timer_interval 3,100 : timer_off 3 : on_timer 3,delai
end

delai:
  timer_off 3
  res% = dll_call3("SelectRichEditText",RE%,1,0)
  end
  
Change:
' un caractère est tapé au clavier, où est le curseur ?
res% = dll_call2("RichEditGetInformation",RE%,3)
item_add 2,"Position du curseur : "+str$(res%)

' je replace le curseur en position 0, et là surprise,

' res% = dll_call3("SelectRichEditText",RE%,1,0)
timer_on 3

' il reste après le premier caractère et pas avant
' autre surprise, le curseur va se placer avant le premier caractere mais
' apres la frappe d' un deuxième caractere qui est placé avant le premier et
' le curseur reste apres ce caractere
return

Essaie - tu verras que ça marche.

EDIT

Rassure-toi, je cherche une solution à ce problème, interne à KGF.dll !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: RichEditGetInformation 3   Sam 1 Mar 2014 - 3:50

Voilà, c'est fait.

Recharge la nouvelle version KGF.dll V2.89 du 01/03/2014. Elle corrige ce problème de façon interne, et rend inutile la construction avec le timer que j'ai postée ci-dessus. Ton code d'origine fonctionnera, tout en tenant compte bien sûr de la modif
Code:
res% = dll_call3("SelectRichEditText",RE%,1,0)
dans la routine "Change", pour les raisons décrites plus haut.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7930
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 1 Mar 2014 - 14:41

Merci Klaus !

C' est téléchargé. 
Je testerai dans la journée.

 Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: RichEditGetInformation 3   

Revenir en haut Aller en bas
 
RichEditGetInformation 3
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: