Page 1 sur 1

editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 15:20
par maistro000
je voudrais savoir si il y a un moyen, en passant par user32 ou une autre librairie, d'optenir et de changer la position du curseur dans un editorgadget et aussi d'optenir le texte sélectionné?

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 16:38
par Ar-S
Sous windows tu peux utiliser l'API SendMessage_

Code : Tout sélectionner

SendMessage_(GadgetID(TonGadget), #EM_SETSEL, Debut_Position, Fin_position)
pour selectionner une partie de ton texte.
(à toi de définir Debut_Position, Fin_position)

et

Code : Tout sélectionner

SendMessage_(GadgetID(TonGadget), #EM_SETSEL, 0, Len(GetGadgetText(TonGadget))) 
pour selectionner tout le texte.

Pour la position du curseur ça doit être similaire avec sendmessage_ mais je n'ai pas de code sous la main.

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 16:55
par Backup
pour positionner le curseur

Code : Tout sélectionner

Procedure EditorGadgetLocate(Gadget,x,y)
    ; Set cursor position
    REG = GadgetID(Gadget)
    CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
    LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
    If LLength >= x-1
        CharIdx + x-1
    EndIf
    Range.CHARRANGE
    Range\cpMin = CharIdx
    Range\cpMax = CharIdx
    SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndProcedure

pour recuperer sa position :

Code : Tout sélectionner

; by Danilo, 08.08.2003 - german forum
;
Procedure EditorGadgetCursorX(Gadget)
    ; returns X-Pos of Cursor
    REG = GadgetID(Gadget)
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
    ProcedureReturn (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
EndProcedure

Procedure EditorGadgetCursorY(Gadget)
    ; returns Y-Pos of Cursor
    REG = GadgetID(Gadget)
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
    ProcedureReturn SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
EndProcedure

Procedure EditorGadgetCursorPos(Gadget)
    ; returns relative Position of Cursor
    SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE)
    ProcedureReturn Range\cpMax
EndProcedure
ça repond a la norme RTF

je ne comprends toujours pas pourquoi ces commandes ne sont pas natives Purebasic 8O
je parle du RTF ....

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 21:08
par G-Rom
@Dobro
parce que le rtf c'est un format proprio microsoft ?

@maistro000

Bienvenu(e) sur le forum , remplace optenir par obtenir, le B est tombé chez toi ;)

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 21:35
par Backup
il semble bien que le RTF soit libre de droit ... (d'ailleurs utilisé dans un maximum de Traitement de text )

a lire ici ....
http://fr.wikipedia.org/wiki/Correspond ... erm%C3%A9s

il est bien considéré comme ouvert ... (ce qui ne signifie pas qu'il soit Abandonné par micromoux )

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 21:52
par maistro000
je vous remercie infiniment pour ces informations!

Re: editorgadget, optenir et changer la position du curseur

Publié : ven. 26/juil./2013 22:25
par G-Rom
Dobro a écrit :il semble bien que le RTF soit libre de droit ... (d'ailleurs utilisé dans un maximum de Traitement de text )
a lire ici ....
http://fr.wikipedia.org/wiki/Correspond ... erm%C3%A9s
il est bien considéré comme ouvert ... (ce qui ne signifie pas qu'il soit Abandonné par micromoux )
http://fr.wikipedia.org/wiki/Rich_Text_Format
pourtant je lis bien :
Spécification Format propriétaire
Ce qui n'est pas compatible avec un format "ouvert", Microsoft possède les droits, donc si tu fait un logiciel que tu vends , tu devras payé une redevance à Microsoft.
C'est pour ca que c'est pas dans PB tout simplement.

Re: editorgadget, optenir et changer la position du curseur

Publié : sam. 27/juil./2013 6:41
par Backup
il n'est pas impensable que l'utilisation (et les droits d'exploitations) de RTF soient lié a la licence Windows ...

et que tout possesseur de Windows puissent utiliser, et exploiter le format RTF ..

sinon , pourquoi Open Office , (et d'autres Softs open Source ou non ) utiliseraient le Format RTF ...
s'il fallait payer un droit ou avoir l'aval de Microsoft ....

qui plus est , rien n’empêche Fred d'en faire la demande a Microsoft ....

je ne vois pas en quoi un Format propriétaire serait contre son utilisation dans un langage informatique
ils ont tout a y gagner ... notamment la popularité ...

si j'etais le créateur d'un format, j'aimerai l'idée qu'il soit utilisé ... sinon ça n'a pas de sens ...

le problème c'est posé a propos du Gif ... du mp3 .. Purebasic utilise ces formats de façon a peine détourné ..(librairie Movie et Directx pour le MP3 et WebGadget() pour le Gif )
je vois pas Franchement pas ce qui bloquerai pour le RTF .... 8O

d'autant que l’éditeur Gadget interprète deja le RTF ... :roll:
il ne manque que les fonctions pour le faire correctement


a ce moment là, Purebasic ne devrai pas utiliser les API windows , puisque c'est la proprieté de Microsoft ....

Re: editorgadget, optenir et changer la position du curseur

Publié : sam. 27/juil./2013 9:43
par G-Rom
j'ai pas dit que c'etait intelligent...
l’éditeur gadget est un composant Windows , logique qu'il le supporte, d'ailleurs pas de rtf sous Linux en natif.
PB n'a pas une ligne de code concernant le rtf , le gif ou le MP3. il est dans "les clous" :D
si j'étais Fred, j'utiliserais une lib comme QT ou wxwidget, car là il se claque 3 API différente pour la lib fenetrage....