FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
RichEditFunction Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
RichEditFunction Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
RichEditFunction Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
RichEditFunction Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
RichEditFunction Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
RichEditFunction Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
RichEditFunction Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
RichEditFunction Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
RichEditFunction Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
RichEditFunction Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
RichEditFunction Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
RichEditFunction Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
RichEditFunction Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
RichEditFunction Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
RichEditFunction Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 RichEditFunction

Aller en bas 
2 participants
AuteurMessage
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: RichEditFunction   RichEditFunction EmptyMer 29 Jan 2014 - 14:47

@ Klaus,

Dans KGF.chm tu dis renvoies à KGF_Sub.bas pour les paramètres par%
mais je ne trouve pas les subs.... scratch 
RichEditFunction Captur42
Revenir en haut Aller en bas
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyMer 29 Jan 2014 - 17:57

Cet oubli sera corrigé dans la prochaine version. Désolé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyMer 29 Jan 2014 - 18:16

Cet oubli est corrigé. Recharge KGF_SUB.bas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyMer 29 Jan 2014 - 21: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyMer 29 Jan 2014 - 23: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyMer 29 Jan 2014 - 23:43

Merci Klaus.

Je comprends mieux avec ces explications... Very Happy
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: autre question   RichEditFunction EmptyJeu 30 Jan 2014 - 14: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyJeu 30 Jan 2014 - 14: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 - 15:12, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyJeu 30 Jan 2014 - 15: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyJeu 30 Jan 2014 - 15: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyJeu 30 Jan 2014 - 18: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyJeu 30 Jan 2014 - 18: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyJeu 30 Jan 2014 - 18: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyJeu 30 Jan 2014 - 19: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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyJeu 30 Jan 2014 - 22: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyJeu 30 Jan 2014 - 22: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
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyJeu 30 Jan 2014 - 22: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyVen 31 Jan 2014 - 0: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyVen 31 Jan 2014 - 0: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
Klaus

Klaus


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

RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction EmptyVen 31 Jan 2014 - 2: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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

RichEditFunction Empty
MessageSujet: re   RichEditFunction EmptyVen 31 Jan 2014 - 2:22

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





RichEditFunction Empty
MessageSujet: Re: RichEditFunction   RichEditFunction Empty

Revenir en haut Aller en bas
 
RichEditFunction
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: