editorgadget, optenir et changer la position du curseur

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
maistro000
Messages : 3
Inscription : ven. 26/juil./2013 10:45

editorgadget, optenir et changer la position du curseur

Message 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é?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: editorgadget, optenir et changer la position du curseur

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: editorgadget, optenir et changer la position du curseur

Message 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 ....
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: editorgadget, optenir et changer la position du curseur

Message 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 ;)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: editorgadget, optenir et changer la position du curseur

Message 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 )
maistro000
Messages : 3
Inscription : ven. 26/juil./2013 10:45

Re: editorgadget, optenir et changer la position du curseur

Message par maistro000 »

je vous remercie infiniment pour ces informations!
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: editorgadget, optenir et changer la position du curseur

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: editorgadget, optenir et changer la position du curseur

Message 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 ....
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: editorgadget, optenir et changer la position du curseur

Message 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....
Répondre