FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Tout est tranquille
par Jean Claude Hier à 21:41

» Texte en gif animé
par JL35 Hier à 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 RichEditFunction

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: RichEditFunction   Mer 29 Jan 2014 - 16:47

@ Klaus,

Dans KGF.chm tu dis renvoies à KGF_Sub.bas pour les paramètres par%
mais je ne trouve pas les subs.... scratch 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Mer 29 Jan 2014 - 19:57

Cet oubli sera corrigé dans la prochaine version. Désolé.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Mer 29 Jan 2014 - 20:16

Cet oubli est corrigé. Recharge KGF_SUB.bas.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 29 Jan 2014 - 23:34

Merci pour la mise à jour express de KGF_SUB.bas.
Cependant, cela ne nous en dit pas plus sur les valeurs à passer en paramètre dans par%.

ex : si je mets "0" pour l' option "1" 

j' ai quoi en retour ?...et idem pour les autres options... Suspect
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Jeu 30 Jan 2014 - 1:09

Pour bold, intalic, underline, strike et invisible, tu passes 1 pour activer et 0 pour désactiver.
Pour FontName, tu passes adr(x$) avec x$ contenant le nom de la police.
Pour FontSize, tu passes la valeur de la taille de la police.
Pour Color, tu passes la valeur RGB de la couleur: (B*256+G)*256+R

Dans tous les cas, la fonctioin retourne -1 si erreur, et autre chose sinon.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 30 Jan 2014 - 1:43

Merci Klaus.

Je comprends mieux avec ces explications... Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: autre question   Jeu 30 Jan 2014 - 16:33

Salut Klaus,

Y a t il un moyen de rendre le focus automatiquement au RichText après le clic sur un bouton ?

Ex : Je tape mon texte dans le RE et je veux que le texte suivant soit en gras.
Je clique sur mon bouton "B" ( ce bouton est créé et il fonctionne bien  Laughing ).
Je voudrais qu' une fois le bouton cliqué le focus soit rendu au RE.
Sauf que ce n' est pas un objet Panoramic et je ne peux pas utiliser "Set_Focus".

Y a t il quelque part dans la dll un moyen de le faire ?...
ou est ce possible de rajouter une petite fonction à la dll pour ses objets ?...

Actuellement, je suis obligé de cliquer sur le RE
pour lui rendre le focus avant de continuer à taper mon texte.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Jeu 30 Jan 2014 - 16:59

Oui. Je vais faire un nouveau code pour RichEditFunction: code 9 = Set Focus. Patience...

EDIT

En fait, ce n'est pas la peine. C'est déjà le cas ! Regarde le code suivant (il faut changer le nom du fichier pour prendre un fichier RTF de chez toi:
Code:
label bleu
dim RE%, res%, f$, clr%

dll_on "KGF.dll"

RE% = dll_call1("RichEditCreate",handle(0))

f$ = "ListeDesMois.rtf"

res% = dll_call2("RichEditFileLoad",RE%,adr(f$))
button 1 : top 1,10 : left 1,300
  caption 1,"Bleu" : on_click 1,bleu
 
end

bleu:
  clr% = (255*256+0)*256+0 : '  blue color
  res% = dll_call3("RichEditFunction",RE%,7,clr%)
  return

Surligne une partie du texte et clique sur "Bleu". Le texte se met en bleu, et le curseur RESTE dans le RichEdit. La preuve: tape directement une lettre, et elle viendra se mettre dans le RichEdit, à la bonne place ! Il en est de même pour les autres options de RichEditFunction.


Dernière édition par Klaus le Jeu 30 Jan 2014 - 17:12, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 30 Jan 2014 - 17:11

Je vais te faire un petit memo pour la doc de RE

bold, italic ,.... ne fonctionne pas tout à fait comme expliqué dans la doc actuelle.

Si il s' agit d' un texte en cours d' écriture, l' attribut est actif depuis le dernière
position du curseur jusqu' à ce qu' il soit rendu inactif par "par%=0".

Si il s'agit d' un texte "loader" il agit bien comme le dit la doc mais si il n' est pas désactiver par par%=0 si on ajoute du texte, même en fin de RE, il aura l' attribut.

d' où l'intérêt :
de connaitre la position du curseur
de pouvoir dé-sélectionner un texte par commande
de pouvoir replacer le curseur par commande au sein du texte
etc...

J' arrête, tu vas finir par me maudire... Laughing 

Je dois m'absenter une heure ou deux, je ferai cela à mon retour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Jeu 30 Jan 2014 - 17:34

On s'est croisé, avec mon EDIT du post précédent.

Mais regarde ce code un peu plus complet:
Code:
label couleur, gras

dim RE%, res%, f$, clr%, bold%

dll_on "KGF.dll"

RE% = dll_call1("RichEditCreate",handle(0))

f$ = "ListeDesMois.rtf"

res% = dll_call2("RichEditFileLoad",RE%,adr(f$))
button 1 : top 1,10 : left 1,300
  caption 1,"Bleu" : on_click 1,couleur
button 2 : top 2,40 : left 2,300
  caption 2,"Noir" : on_click 2,couleur
button 3 : top 3,70 : left 3,300
  caption 3,"Gras" : on_click 3,gras

end

couleur:
  select number_click
  case 1
    clr% = (255*256+0)*256+0 : '  blue color
    res% = dll_call3("RichEditFunction",RE%,7,clr%)
  case 2
    clr% = 0 : ' black color
    res% = dll_call3("RichEditFunction",RE%,7,clr%)
  end_select
  return

gras:
  bold% = 1 - bold%
  res% = dll_call3("RichEditFunction",RE%,1,bold%)
  return

Procède comme suit:
1. place le curseur n'importe où dans le texte, là où le texte est noir et non-gras
2. tape quelques caractères - ils s'afficheront en noir, non-gras
3. clique sur le bouton "Bold" ==> le curseur RESTE dans le RichEdit
4. tape quelques caractères ==> ces caractères s'affichent en GRAS
5. clique à nouveau sur le bouton "Bold" ==> le curseur RESTE dans le RichEdit
6. tape quelques caractères ==> ces caractères s'affichent en non-gras
7. clique sur "Bleu" ==> Le curseur RESTE dans le RichEdit
8. tape quelques caractères ==> ces caractères s'affichent en bleu
9. clique sur "Noir" ==> le curseur RESTE dans le RichEdit
10 tape à nouveau quelques caractères ==> ces caractères s'affichent en noir

Tu vois ? La couleur reste active tan que tu ne la changes pas. Les attributs aussi. Pour les attributs, la valeur 1 du paramètre active l'attribut, la valeur 0 désactive l'attribut. Si, au moment de l'emploi de la fonction RichEditFunction, du texte était sélectionné (surligné), la fonction s'applique sur le texte sélectionné, et la couleur ou l'attribut RESTE ACTIF jusqu'au changement suivant.

J'espère que c'est plus clair come ça.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 30 Jan 2014 - 20:30

Je ne sais pas si ce que j' ai chez moi est la même chose que chez toi mais :

Selection du texte         >>surlignage du texte en noir
Clic sur un bouton         >>changement de la couleur
clic sur la fin d' une ligne >> le curseur s' affiche et clignote sur le RE
clic sur une des touches de direction >> le RE perd le focus et selection du bouton suivant du changement de couleur

Apparemment pour panoramic c' est toujours le dernier bouton cliqué qui a le focus

Je crois que la fonction s' impose de même que des ascenceurs seraient les bienvenues
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Jeu 30 Jan 2014 - 20:45

Tu as esayé le code et le mode d'emploi que j'ai posté ci-dessus ? Je crois que tu interprètes mal tes résultats.

Pour l'ascenseur, c'est une vraie suggestion, et je vais l'étudier.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 30 Jan 2014 - 20:57

Grrrr !....

Je crois que le Pb vient du fait que mes boutons sont des "Button_Picture"
il doit y avoir un truc qui se passe avec... scratch 

J' ai mis à jour mon webdav. Les boutons Bold, italic et underline sont actifs
si tu veux y jeter un oeil.

Je te propose une fonction plus générale pour les objets KGF.
res%=dll_call1("SetFocusByHandle",obj%)

RE% pour RchEditText
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Jeu 30 Jan 2014 - 21:48

Je vais regarder ça, Ygeronimi. Mais avec le code que j'ai posté, tu vois clairement que le focus est redonné au RichEdit après chaque exécution de RichEditFunction. Et j'ai vérifié dans le source de KGF.dll: le focus est restauré explicitement. Voici la partie du code Delphi concerné:
Code:
{
codes fonction:
  1 = sélection en gras si par=1
  2 = sélection en italique si par=1
  3 = sélection soulignée si par=1
  4 = sélection barrée si par=1
  5 = nom de police par
  6 = taille de police par
  7 = sélection en couleur par
  8 = visibilité
}
function RichEditFunction(obj,fct,par: integer):integer; stdcall; export;
var
  RE: TRichEdit;
  s: string;
begin
  result := -1;
  try
    RE := TRichEdit(obj);
    case fct of
      1:  begin
            if par=1 then RE.SelAttributes.Style := RE.SelAttributes.Style+[fsBold]
                    else RE.SelAttributes.Style := RE.SelAttributes.Style-[fsBold];
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      2:  begin
            if par=1 then RE.SelAttributes.Style := RE.SelAttributes.Style+[fsItalic]
                    else RE.SelAttributes.Style := RE.SelAttributes.Style-[fsItalic];
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      3:  begin
            if par=1 then RE.SelAttributes.Style := RE.SelAttributes.Style+[fsUnderline]
                    else RE.SelAttributes.Style := RE.SelAttributes.Style-[fsUnderline];
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      4:  begin
            if par=1 then RE.SelAttributes.Style := RE.SelAttributes.Style+[fsStrikeOut]
                    else RE.SelAttributes.Style := RE.SelAttributes.Style-[fsStrikeOut];
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      5:  begin
            s := pstring(par)^;
            RE.SelAttributes.Name := s;
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      6:  begin
            RE.SelAttributes.Size := par;
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      7:  begin
            RE.SelAttributes.Color := par;
            RE.SetFocus;    //Rend la main au RichEdit
          end;
      8:  begin
            RE.Visible := (par=1);
            if par=1 then RE.SetFocus;    //Rend la main au RichEdit
          end;
    end;
    result := 0;
  except
  end;
end;
on voit clairement que le focus est restauré systématiquement. Si ça ne marche pas chez toi, c'est que ça vient de ron programme. Je vais regarder ça ce soir.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Ven 31 Jan 2014 - 0:04

J'ai regardé ton code.

Le problème vien du fait que seule la procédure Bold_text() est appelée lors du clic sur le bouton correspondant. Mais les procédures Italic_text() et Underline_text() ne sont jamais appelées par leur bouton correspondant. Place une commande MESSAGE immédiatement après la commande SUB, et tu peux le constater. La sub Color_text() est vide - pas encore codée.

Voici ma petite démo, encore complétée pour voir les italiques et soulignés:
Code:
label opt

dim RE%, res%, f$, clr%, bold%, italic%, underline%

dll_on dir_current$+"\PPE_fichiers\KGF.dll"

RE% = dll_call1("RichEditCreate",handle(0))

f$ = "ListeDesMois.rtf"

res% = dll_call2("RichEditFileLoad",RE%,adr(f$))
button 1 : top 1,10 : left 1,300
  caption 1,"Bleu" : on_click 1,opt
button 2 : top 2,40 : left 2,300
  caption 2,"Noir" : on_click 2,opt
button 3 : top 3,70 : left 3,300
  caption 3,"Gras" : on_click 3,opt
button 4 : top 4,100 : left 4,300
  caption 4,"Italic" : on_click 4,opt
button 5 : top 5,130 : left 5,300
  caption 5,"Underline" : on_click 5,opt

end

opt:
  select number_click
  case 1
    clr% = (255*256+0)*256+0 : '  blue color
    res% = dll_call3("RichEditFunction",RE%,7,clr%)
  case 2
    clr% = 0 : ' black color
    res% = dll_call3("RichEditFunction",RE%,7,clr%)
  case 3
    bold% = 1 - bold%
    res% = dll_call3("RichEditFunction",RE%,1,bold%)
  case 4
    italic% = 1 - italic%
    res% = dll_call3("RichEditFunction",RE%,2,italic%)
  case 5
    underline% = 1 - underline%
    res% = dll_call3("RichEditFunction",RE%,3,underline%)
  end_select
  return

Tu constates aisément que le problème ne vient pas de la DLL, mais de ton programme.

En fait, puisque tes procédures pour italique et souligné ne sont jamais appelées, la fonction RichEditFunction n'est pas exxécutée non plus. Et donc, le focus reste sur l'objet qui a reçu le clic, donc le bouton image. Et c'est ce qui m'a mis la puce à l'oreille.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 31 Jan 2014 - 0:19

Pour les deux ( italic et underline ) je me suis apperçu de l' horreur..euh...erreur.
Mais cela n' explique pas que je doive recliquer sur le RE pour lui rendre le focus après avoir cliquer sur le bouton "Bold"
En fait, le RE perd le focus dès que je passe sur un des "bouton picture".

Je pense que cela vient d'une des fonctions de ces boutons ( Fichier OBJ.bas lignes 225 à 243 )

Ps : Je vais activer tous ces boutons pour ne plus avoir d' autres surprises.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 31 Jan 2014 - 0:59

Le Casse..... est toujours là.

pour les couleurs, tu mets cette formule : clr% = (255*256+0)*256+0 : '  blue color  scratch 
pourrais tu traduire en placant R,G,B dans ta formule svp ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Ven 31 Jan 2014 - 2:11

Formule: RGB% = (B%*256+G%)*256+R%

Ton bouton B marche très bien, tant que tu ne repasses pas sun un autre bouton image. Essaie ceci:
commence à saisir tu texte - il se met en mode normal
monte le curseur sur le bouton "Bold" et clique - le curseur réapparaît dans le RichEdit !
continue à saisir tu texte sans bouger la souris - le texte est en gras
reclique sur le bouton "Bold" (la souris est toujours dessus) - le curseur réapparait dans le RichEdit !
continue à saisir du texte sans bouger la souris - le texte est en normal

Cela montre que RichEdit fonctionne bien. Tu as néanmoins un problème avec la synchronisation des boutons image.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 31 Jan 2014 - 2:38

Je me pose la question sur la variable res% qui sert à beaucoup de monde...
ne pourrait elle pas se court-circuiter entre les fonctions du bouton et celle de bold ?


J' ai dit une bêtise, dans l' objet Picture_button elle s' appelle KGF_res%.
 scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: RichEditFunction   Ven 31 Jan 2014 - 4:11

J'ai mis en place la version V2.77 de KGF.dll qui contient la fonction dont tu as besoin...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 31 Jan 2014 - 4:22

Ok Klaus, une nouvelle fois merci pour le temps que tu passes à nous aider.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: RichEditFunction   

Revenir en haut Aller en bas
 
RichEditFunction
Voir le sujet précédent Voir le sujet suivant 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: