FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
RichEditGetInformation 3 Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
RichEditGetInformation 3 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
RichEditGetInformation 3 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
RichEditGetInformation 3 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
RichEditGetInformation 3 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
RichEditGetInformation 3 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
RichEditGetInformation 3 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
RichEditGetInformation 3 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
RichEditGetInformation 3 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
RichEditGetInformation 3 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
RichEditGetInformation 3 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
RichEditGetInformation 3 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
RichEditGetInformation 3 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
RichEditGetInformation 3 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
RichEditGetInformation 3 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 RichEditGetInformation 3

Aller en bas 
2 participants
AuteurMessage
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditGetInformation 3 Empty
MessageSujet: RichEditGetInformation 3   RichEditGetInformation 3 EmptyVen 28 Fév 2014 - 17: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
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditGetInformation 3 Empty
MessageSujet: re   RichEditGetInformation 3 EmptyVen 28 Fév 2014 - 21: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
Klaus

Klaus


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

RichEditGetInformation 3 Empty
MessageSujet: Re: RichEditGetInformation 3   RichEditGetInformation 3 EmptySam 1 Mar 2014 - 0: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

RichEditGetInformation 3 Empty
MessageSujet: Re: RichEditGetInformation 3   RichEditGetInformation 3 EmptySam 1 Mar 2014 - 1: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

RichEditGetInformation 3 Empty
MessageSujet: Re: RichEditGetInformation 3   RichEditGetInformation 3 EmptySam 1 Mar 2014 - 1: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditGetInformation 3 Empty
MessageSujet: re   RichEditGetInformation 3 EmptySam 1 Mar 2014 - 12:41

Merci Klaus !

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

 Laughing
Revenir en haut Aller en bas
Contenu sponsorisé





RichEditGetInformation 3 Empty
MessageSujet: Re: RichEditGetInformation 3   RichEditGetInformation 3 Empty

Revenir en haut Aller en bas
 
RichEditGetInformation 3
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: