OVH Cloud OVH Cloud

Toujours Rich text Box

7 réponses
Avatar
patrice henrio
Depuis aujourd'hui mon Rich text Box fait des caprices. Il marchait bien
jusque là.
Je me suis créé une fonction qui me permet de connaître la hauteur utilisé
par l'affichage du texte dasn, un RTB. Elle est très rudimentaire et on peut
surement faire beaucoup mieux. Peut-être même que cela existe tout fait,
mais je n'ai pas trouvé.
J'utilise dans ma fonction l'action suivante :

RTB.selStart=RTB.selStart+Pas.

Pas est une varaible long.

Tout se passe bien jusqu'à ce que RTB.SelStart prenne la valeur 1281 et pas
la valeur 1.
dans ce cas le résultat de l'addition donne toujours 1

Je précise que la longueur du texte est de 6406.

Je ne comprends rien.

Cependant si quelqu'un a une fonction pour trouver la hauteur utile d'un
RTB, je suis preneur.

J'ai pour ma part décomposer les fonctions sendmessage que je ne trouvais
pas très clair en sub du genre positionnerScroll(RTB,Position) ou
TrouverPoint(RTB,Point,Position).

J'en profite pour signaler qu'effectivement utiliser call <nom de sub> ne
donne pas toujours le même résultat que l'invocation directe de la sub.

7 réponses

Avatar
Zoury
> J'en profite pour signaler qu'effectivement utiliser call <nom de sub> ne
donne pas toujours le même résultat que l'invocation directe de la sub.



huh? peut-on voir un exemple qui prouve ce affirmation?! et aussi pourquoi
utiliser "effectivement" dans ta phrase? j'ai raté une discussion???

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
patrice henrio
Effectivempent car il y a quelques jours j'avais posé la question sur
l'utilisation du call dont je ne voyais pas la nécessité. Quelqu'un (je ne
sais plus qui malheureusement) m'avait dit que d'une part c'était affaire de
goût, mais aussi dans quelques cas le résultat n'était pas le même. dans un
cas (je ne sais plus lequel) les paramètres étaient évalués, dans l'autre
non (un peu comme en Lisp selon que l'on utilise une expr ou une fexpr).
J'ai voulu testé un des exemples fournis qui fait appel à sendMessage. Si on
appelle la procédure sans call, le résultat est différent d'avec call.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
La compilation annonce une erreur car un "=" est attendu (SendMessage doit
renvoyé quelque chose et VB veut un réceptacle.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
Call SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
Ne provoque aucun message d'erreur et passe très bien.

"Zoury" a écrit dans le message de
news:
> J'en profite pour signaler qu'effectivement utiliser call <nom de sub>


ne
> donne pas toujours le même résultat que l'invocation directe de la sub.

huh? peut-on voir un exemple qui prouve ce affirmation?! et aussi pourquoi
utiliser "effectivement" dans ta phrase? j'ai raté une discussion???

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous




Avatar
Zoury
ahhh! ce devait etre moi... ;O)

Ta phrase portait a confusion.. pour moi l'invocation directe de la sub est
comme ceci :

MaSub mon_param
et non
MaSub(mon_param)
car dans le cas ci-haut, vb ramene le code comme suit
MaSub (mon_param)
et évalue le paramètre.. ce qui cause généralement plus de problème que
d'autre ;O)



--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"patrice henrio" wrote in message
news:
Effectivempent car il y a quelques jours j'avais posé la question sur
l'utilisation du call dont je ne voyais pas la nécessité. Quelqu'un (je ne
sais plus qui malheureusement) m'avait dit que d'une part c'était affaire


de
goût, mais aussi dans quelques cas le résultat n'était pas le même. dans


un
cas (je ne sais plus lequel) les paramètres étaient évalués, dans l'autre
non (un peu comme en Lisp selon que l'on utilise une expr ou une fexpr).
J'ai voulu testé un des exemples fournis qui fait appel à sendMessage. Si


on
appelle la procédure sans call, le résultat est différent d'avec call.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
La compilation annonce une erreur car un "=" est attendu (SendMessage doit
renvoyé quelque chose et VB veut un réceptacle.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
Call SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
Ne provoque aucun message d'erreur et passe très bien.

"Zoury" a écrit dans le message de
news:
> > J'en profite pour signaler qu'effectivement utiliser call <nom de sub>
ne
> > donne pas toujours le même résultat que l'invocation directe de la


sub.
>
> huh? peut-on voir un exemple qui prouve ce affirmation?! et aussi


pourquoi
> utiliser "effectivement" dans ta phrase? j'ai raté une discussion???
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
> Merci de poster les réponses au groupe afin d'en faire profiter à tous
>
>




Avatar
ng
euh normal que ca :

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub

ca provoque une erreur !!!!!!!!!!!!!!!!!!!!!!

il faut ecrire :

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
SendMessage RTB.hwnd, EM_SETSCROLLPOS, 0, Pt
End Sub

Nicolas.

"patrice henrio" a écrit dans le message de
news:
Effectivempent car il y a quelques jours j'avais posé la question sur
l'utilisation du call dont je ne voyais pas la nécessité. Quelqu'un (je ne
sais plus qui malheureusement) m'avait dit que d'une part c'était affaire


de
goût, mais aussi dans quelques cas le résultat n'était pas le même. dans


un
cas (je ne sais plus lequel) les paramètres étaient évalués, dans l'autre
non (un peu comme en Lisp selon que l'on utilise une expr ou une fexpr).
J'ai voulu testé un des exemples fournis qui fait appel à sendMessage. Si


on
appelle la procédure sans call, le résultat est différent d'avec call.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
La compilation annonce une erreur car un "=" est attendu (SendMessage doit
renvoyé quelque chose et VB veut un réceptacle.

Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
Call SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
End Sub
Ne provoque aucun message d'erreur et passe très bien.

"Zoury" a écrit dans le message de
news:
> > J'en profite pour signaler qu'effectivement utiliser call <nom de sub>
ne
> > donne pas toujours le même résultat que l'invocation directe de la


sub.
>
> huh? peut-on voir un exemple qui prouve ce affirmation?! et aussi


pourquoi
> utiliser "effectivement" dans ta phrase? j'ai raté une discussion???
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
> Merci de poster les réponses au groupe afin d'en faire profiter à tous
>
>




Avatar
patrice henrio
J'ai trouvé. Le pb vient du fait qu'un RichTextBox ne peut pas se
positionner sur un caractère de code 13 (Retour Chariot), et donc il se
positionne automatiquement juste avant.


"patrice henrio" a écrit dans le message de
news:e%
Depuis aujourd'hui mon Rich text Box fait des caprices. Il marchait bien
jusque là.
Je me suis créé une fonction qui me permet de connaître la hauteur utilisé
par l'affichage du texte dasn, un RTB. Elle est très rudimentaire et on


peut
surement faire beaucoup mieux. Peut-être même que cela existe tout fait,
mais je n'ai pas trouvé.
J'utilise dans ma fonction l'action suivante :

RTB.selStart=RTB.selStart+Pas.

Pas est une varaible long.

Tout se passe bien jusqu'à ce que RTB.SelStart prenne la valeur 1281 et


pas
la valeur 1.
dans ce cas le résultat de l'addition donne toujours 1

Je précise que la longueur du texte est de 6406.

Je ne comprends rien.

Cependant si quelqu'un a une fonction pour trouver la hauteur utile d'un
RTB, je suis preneur.

J'ai pour ma part décomposer les fonctions sendmessage que je ne trouvais
pas très clair en sub du genre positionnerScroll(RTB,Position) ou
TrouverPoint(RTB,Point,Position).

J'en profite pour signaler qu'effectivement utiliser call <nom de sub> ne
donne pas toujours le même résultat que l'invocation directe de la sub.




Avatar
Zoury
ex act! :O)


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"patrice henrio" wrote in message
news:%
Donc en fait je n'avais pas vraiment compris. la différence viendraiot
plutôt des parenthèses que du call.

"Zoury" a écrit dans le message de
news:
> ahhh! ce devait etre moi... ;O)
>
> Ta phrase portait a confusion.. pour moi l'invocation directe de la sub
est
> comme ceci :
>
> MaSub mon_param
> et non
> MaSub(mon_param)
> car dans le cas ci-haut, vb ramene le code comme suit
> MaSub (mon_param)
> et évalue le paramètre.. ce qui cause généralement plus de problème que
> d'autre ;O)
>
>
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
> Merci de poster les réponses au groupe afin d'en faire profiter à tous
> "patrice henrio" wrote in message
> news:
> > Effectivempent car il y a quelques jours j'avais posé la question sur
> > l'utilisation du call dont je ne voyais pas la nécessité. Quelqu'un


(je
ne
> > sais plus qui malheureusement) m'avait dit que d'une part c'était
affaire
> de
> > goût, mais aussi dans quelques cas le résultat n'était pas le même.


dans
> un
> > cas (je ne sais plus lequel) les paramètres étaient évalués, dans
l'autre
> > non (un peu comme en Lisp selon que l'on utilise une expr ou une


fexpr).
> > J'ai voulu testé un des exemples fournis qui fait appel à sendMessage.
Si
> on
> > appelle la procédure sans call, le résultat est différent d'avec call.
> >
> > Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
> > SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
> > End Sub
> > La compilation annonce une erreur car un "=" est attendu (SendMessage
doit
> > renvoyé quelque chose et VB veut un réceptacle.
> >
> > Sub Toto((ByRef RTB As RichTextBox, ByRef Pt As PointAPI)
> > Call SendMessage(RTB.hwnd, EM_SETSCROLLPOS, 0, Pt)
> > End Sub
> > Ne provoque aucun message d'erreur et passe très bien.
> >
> > "Zoury" a écrit dans le message de
> > news:
> > > > J'en profite pour signaler qu'effectivement utiliser call <nom de
sub>
> > ne
> > > > donne pas toujours le même résultat que l'invocation directe de la
> sub.
> > >
> > > huh? peut-on voir un exemple qui prouve ce affirmation?! et aussi
> pourquoi
> > > utiliser "effectivement" dans ta phrase? j'ai raté une discussion???
> > >
> > > --
> > > Cordialement
> > > Yanick Lefebvre - MVP pour Visual Basic
> > > http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> > > http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
> > >
> > > Merci de poster les réponses au groupe afin d'en faire profiter à


tous
> > >
> > >
> >
> >
>
>




Avatar
Zoury
> Oui mais ça n'explique pas pourquoi le message est "manque "="", ni


pourquoi
ça passe avec call.



étant donnée que c'est entre parenthèse sans Call, VB essai d'interprêter la
signification de l'expression

RTB.hwnd, EM_SETSCROLLPOS, 0, Pt

il se dit "huh?! mais qu'est ce que c'est que cette variable??!" ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous