Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Demande d'aide sur l'objet Richedit. | |
| | |
Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 8:28 | |
| Bonjour. @Klaus. Affichage des caractères Unicode. Je suis près du but, mais je bloque encore sur un point. J'arrive à charger un fichier contenant des caracères Unicode, dans un objet Richedit. Mais je ne parviens toujours pas à ajouter des caractères Unicode individuels. J'aimerais que lorsque l'utilisateur clique sur le bouton, le caracère indiqué soit ajouté à la fin du texte de l'objet RichEdit. Merci de ton aide. - Code:
-
dim clr%, n%, res%, r1%, taille%, f$, fichier$, s$
' Fichier au format UTF8. ' Il contient la chaîne suivante: ćđ f$="c:\a\texte.txt"
label c
dll_on "kgf.dll"
r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,c
end
c: ' fichier$="c:\a\temporaire.txt" ' res%=dll_call2("RichEditFileSave",r1%,adr(fichier$))
return | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 10:04 | |
| Est-ce que cela peut convenir ? - Code:
-
dim clr%, n%, res%, r1%, taille%, f$, fichier$, s$, txt$
' Fichier au format UTF8. ' Il contient la chaîne suivante: cd f$="texte.txt"
label c
dll_on "kgf.dll"
r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,c
end
c: ' fichier$="c:\a\temporaire.txt" ' res%=dll_call2("RichEditFileSave",r1%,adr(fichier$)) txt$= "'a" res% = dll_call2("SetSelectedRichEditText",r1%,adr(txt$))
return | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 10:18 | |
| Bonjour.
Non, désolé Klaus, le fait de cliquer sur le bouton n'envoie pas le caractère Unicode 'c apostrophe' à l'objet RichEdit.
J'avais pensé à la solution suivante:
. créer une nouvelle commande 'RichEditFileAdd' qui ajouterait le contenu d'un fichier RTF à la fin de l'objet RichEdit, sans supprimer le texte initial bien entendu.
Ce qui me permettrait de créer des fichiers individuels, contenant chacun un caractère Unicode.
Dans ce cas, mon problème serait résolu.
Qu'en penses-tu ?
Merci de la suite. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 10:50 | |
| Bonne idée. Je vais faire ça. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 11:35 | |
| Pour mon éducation personnelle: qu'est-ce que tu appelles "c apostrophe" ? Est-ce un caractère de UTF8 ? Lequel ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 14:18 | |
| J'ai mis une version d'essai de KGF.dll sur mon WebDav. Elle contient une nouvelle fonction: - Code:
-
res% = dll_call2("RichEditFileInsert",RE%,adr(fichier$)) Cette fonction marche comme RichEditFileLoad, sauf qu'elle insère le contenu du fichier dans le RichEdit à l'endroit du curseur, ou à la place du texte sélectionné. Et le fichier inséré peut être un seul caractère ou tout un grand texte, c'est indifférent. On pourrait ainsi réaliser, par exemple, l'insertion de phrases prédéfinies... Je n'ai pas changé encore la version de KGF.dll, et la fonction n'est pas encore documentée dans le fichier d'aide. J'attends ton retour par rapport à ça... | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 15:15 | |
| Bonjour. Un grand merci Klaus. Je vais tester la nouvelle fonction, ensuite je te ferai un retour. Pour ton info, le caractère 'c apostrophe' est utilisé dans l'alphabet bosniaque, la table des caractères Unicode se trouvant ici: http://unicode-table.com/fr/#latin-extended-a.Mais ce n'était qu'un exemple mon but étant de pouvoir afficher n'importe quel caractère Unicode dans un objet Panoramic. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 15:22 | |
| Bonjour. J'obtiens le message d'erreur suivant, ligne 42: 'Not correct arithmetic expression. Error in function line 42.' Aurais-je omis quelque chose ? Merci de ton aide. - Code:
-
dim clr%, hnd%, n%, res%, r1%, taille%, f$, fichier$, s$
' Fichier au format UTF8. f$="c:\a\texte.txt"
label c
dll_on "kgf.dll"
r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
' handle du richedit. res%=dll_call3("RichEditFunction",r1%,11,0) hnd%=dll_call0("GetActiveControl") ' message str$(hnd%)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,c
end
c: fichier$="c:\a\c.rtf" res%=dll_call2("RichEditFileInsert",r1%,adr(fichier$))
return | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 15:28 | |
| Bonjour.
Je viens de refaire un essai, après avoir téléchargé à nouveau kgf.dll.
Lorsque je clique sur le bouton pour insérer le fichier, rien ne se passe. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 15:31 | |
| Merci pour ce lien - c'est impressionnant ! | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 16:30 | |
| Bonjour.
@Klaus.
Je souhaiterais l'ajout des deux fonctions suivantes, concernant l'objet RichEdit.
. SetSelectedTextToClipboard(hnd%) qui enverrait le texte sélectionné vers le presse-papiers Windows.
. GetTextFromClipBoard(hnd%) qui retournerait le texte du presse-papiers à la position actuelle du curseur.
Est-ce possible ?
Merci. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 16:49 | |
| Il y a des fois où il suffit de demander pour être servi...
Sur mon WebDav, il y a une version de KGF.dll dans laquelle j'ai modifié la fonction RichEditFunction en ajoutant le code fonction 12. Si le second paramètre est 0, le texte sélectionné sera placé dans le presse-papier. Se le second paramètre est 1 (ou simplement différent de 0), le texte dans le presse-papier remplace le texte sélectionné, ou s'insère à l'endroit du curseur si aucun texte n'est sélectionné. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:06 | |
| Bonjour. Je viens de tester la fonction 12, mais elle ne fonctionne pas, ou alors j'ai omis quelque chose. Merci de ton aide. Contenu du 1er objet: abcd Contenu du 2è objet: ćđ - Code:
-
dim a$, clr%, hnd%, n%, res%, r1%, r2%, taille%, f$, f2$, fichier$, s$, true%, x%
' Fichier au format UTF8.
' {\rtf1\fbidis\ansi\ansicpg1252\deff0\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset128 Calibri;}} ' {\colortbl ;\red0\green0\blue255;} ' \viewkind4\uc1\pard\ltrpar\cf1\lang1036\b\f0\fs40 abcd\u233?\u263?\u273?\cf0\fs28 ' \par }
label b, c
dll_on "kgf.dll"
f$="c:\a\c.txt" r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
r2%=dll_call1("RichEditCreate",handle(0)) res%=dll_call5("RichEditGeometry",r2%,200,0,200,100) f2$="c:\a\cd.rtf" res%=dll_call2("RichEditFileLoad",r2%,adr(f2$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
' handle du richedit. res%=dll_call3("RichEditFunction",r1%,11,0) hnd%=dll_call0("GetActiveControl") ' message str$(hnd%)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,b
end
b: n%=dll_call2("RichEditGetInformation",r1%,1) res%=dll_call3("SelectRichEditText",r1%,n%,0) res%=dll_call3("SelectRichEditText",r2%,1,1) res%=dll_call3("RichEditFunction",r2%,12,0) ' res%=dll_call3("RichEditFunction",r1%,11,0) res%=dll_call3("RichEditFunction",r1%,12,1) return | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:26 | |
| Essaie comme ceci: - Code:
-
dim a$, clr%, hnd%, n%, res%, r1%, r2%, taille%, f$, f2$, fichier$, s$, true%, x%
' Fichier au format UTF8.
' {\rtf1\fbidis\ansi\ansicpg1252\deff0\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset128 Calibri;}} ' {\colortbl ;\red0\green0\blue255;} ' \viewkind4\uc1\pard\ltrpar\cf1\lang1036\b\f0\fs40 abcd\u233?\u263?\u273?\cf0\fs28 ' \par }
label b
dll_on "kgf.dll"
f$="c:\a\c.txt" r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
r2%=dll_call1("RichEditCreate",handle(0)) res%=dll_call5("RichEditGeometry",r2%,200,0,200,100) f2$="c:\a\cd.rtf" res%=dll_call2("RichEditFileLoad",r2%,adr(f2$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
' handle du richedit. res%=dll_call3("RichEditFunction",r1%,11,0) hnd%=dll_call0("GetActiveControl") ' message str$(hnd%)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,b
end
b: n%=dll_call2("RichEditGetInformation",r1%,1) ' res%=dll_call3("SelectRichEditText",r1%,n%,0) : ' <=== uniquement s'il faut placer r2 en fin de r1 !
res%=dll_call3("SelectRichEditText",r2%,1,1) res%=dll_call3("RichEditFunction",r2%,12,0) res%=dll_call3("RichEditFunction",r1%,11,0) res%=dll_call3("RichEditFunction",r1%,12,1) return La contenu de r2 est inséré à la place de la sélection opérée dans r1 avant l'utilisation du bouton, ou à l'endroit du curseur dans r1 si l'on n'a rien sélectionné. Le contenu de r2 peut avoir n'importe quelle longueur - il est inséré tel quel. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:36 | |
| Désolé Klaus, mais cela ne marche toujours pas.
Je vois que tu as bien compris ce que je cherche à faire, soit:
. sélectionner un unique caractère dans le second objet, puis l'insérer à la fin du 1er objet.
Ce qui simplifierait drôlement mon code.
Merci de ton aide. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:48 | |
| @Klaus.
Je viens de tester ceci:
. écrire 'abcd' dans le 1er objet. . puis 'ef' dans le second.
En cliquant sur le bouton, on voit bien que le 'e' est bien sélectionné, mais il ne s'affiche pas dans le 1er objet. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:48 | |
| Ben, qu'est-ce qui ne marche pas ? Cela insère bien le premier caractère de r2 à la fin de r1 ? Chez moi, en tout cas: - Code:
-
dim a$, clr%, hnd%, n%, res%, r1%, r2%, taille%, f$, f2$, fichier$, s$, true%, x%
' Fichier au format UTF8.
' {\rtf1\fbidis\ansi\ansicpg1252\deff0\deftab709{\fonttbl{\f0\fswiss\fprq2\fcharset128 Calibri;}} ' {\colortbl ;\red0\green0\blue255;} ' \viewkind4\uc1\pard\ltrpar\cf1\lang1036\b\f0\fs40 abcd\u233?\u263?\u273?\cf0\fs28 ' \par }
label b
dll_on "kgf.dll"
f$="c:\a\c.txt" r1%=dll_call1("RichEditCreate",handle(0)) res%=dll_call2("RichEditFileLoad",r1%,adr(f$))
r2%=dll_call1("RichEditCreate",handle(0)) res%=dll_call5("RichEditGeometry",r2%,200,0,200,100) f2$="c:\a\cd.rtf" res%=dll_call2("RichEditFileLoad",r2%,adr(f2$))
' Nombre de caractères dans l'objet. n%=dll_call2("RichEditGetInformation",r1%,1)
' Sélectionner tout le texte. res%=dll_call3("SelectRichEditText",r1%,1,n%)
' Taille de la police = 20 res%=dll_call3("RichEditFunction",r1%,6,20)
clr%=(255*256+0)*256+0 : ' couleur bleue res%=dll_call3("RichEditFunction",r1%,7,clr%)
' Se positionner à la fin du texte. res%=dll_call3("SelectRichEditText",r1%,n%,0)
' handle du richedit. res%=dll_call3("RichEditFunction",r1%,11,0) hnd%=dll_call0("GetActiveControl") ' message str$(hnd%)
button 2 top 2,200 caption 2,"c apostrophe" on_click 2,b
end
b: n%=dll_call2("RichEditGetInformation",r1%,1) res%=dll_call3("SelectRichEditText",r1%,n%,0) : ' <=== uniquement s'il faut placer r2 en fin de r1 !
res%=dll_call3("SelectRichEditText",r2%,1,1) res%=dll_call3("RichEditFunction",r2%,12,0) res%=dll_call3("RichEditFunction",r1%,11,0) res%=dll_call3("RichEditFunction",r1%,12,1) return Il faut que tu donnes un peu plus de renseignements. Simplement "ça ne marche pas" suffit rarement. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:52 | |
| On s'est croisé. Voici ce que j'obtiens, lors du premier clic sur le bouton: C'est correct, non ? | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 17:54 | |
| Oui, c'est correct chez toi.
Mais, malheureusement, cela ne marche pas sur mon portable.
Je suis sous Win 10.
497 correspond à KGF.dll V04.97 21/08/2015 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 18:07 | |
| C'est normal. J'avais bien indiqué que c'est une version de test et que je n'ai pas encore changé le numéro de version dans KGF.dll. Mais le fichier KGF.dll sur mon WebDav contient bien la version correcte, avec la date du 24/8/2015, à 16h43. Je pense qu'il faut que tu recharges KGF.dll à partir du WebDav pour que ça marche. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 18:12 | |
| OK, je viens de télécharger la version du 24 août.
Le 1er caractère de R2 est bien copié dans R1.
Le problème est le suivant maintenant:
Ce caractère étant un caractère Unicode 'c apostrophe', il est recopié en tant qu'un 'c' !!
Merci de voir. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 18:19 | |
| Le problème, Pedro, c'est que RichEdit est conçu pour travailler en ANSI et non en Unicode. Si certaines choses se passent bien tel que le chargement d'un fichier contenant de l'Unicode, d'autres poseront problème. En général, tout ce qui passe par des chaînes de caractères est ramené automatiquement en ANSI. Et d'ailleurs, Panoramic (et Delphi 6 utilisé pour la DLL) ne travaille pas en Unicode. Tout ce que tu places dans une variable de type string est en ANSI, pas en Unicode.
Essaie de revenir à ta première idée, celle d'avoir de petits fichiers pour chaque caractère Unicode, et utilise la fonction RichEditFileInsert au lieu du code 12 de RichEditFunction. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 18:22 | |
| Merci pour les infos.
Je suis donc revenu à ma 1ère idée.
Cependant, la fonction FileInsert ne fonctionne pas non plus, lors du chargement d'un fichier RTF contenant de l'Unicode.
Ni même avec un fichier ne contenant que de l'ASCii, je viens de tester.
Merci de ton aide. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 19:15 | |
| Recharge la DLL à partir de mon WebDav. J'ai fait une correction. J'ai l'impression que ça marche. J'ai placé un fichier RTF dans un fichier cd.txt, et ça marche... | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Demande d'aide sur l'objet Richedit. Lun 24 Aoû 2015 - 19:38 | |
| Bonsoir.
Formidable, tout fonctionne parfaitement maintenant.
Un grand merci Klaus.
Je vais donc continuer sur la base de fichiers individuels. | |
| | | Contenu sponsorisé
| Sujet: Re: Demande d'aide sur l'objet Richedit. | |
| |
| | | | Demande d'aide sur l'objet Richedit. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |