Couleures dans un EditorGadget

Programmation d'applications complexes
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Couleures dans un EditorGadget

Message par Aranoth »

Salut,

je voudrais savoir si c'est possible de faire une colorisation syntaxique dans un EditorGagdet ?

Merci
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

certainement que oui car quand tu fais du copier coller de texte avec de la mise en forme, ça la garde dans l'éditeur gadget.

mais de la à savoir comment faire, ben j'aimerai bien moi aussi avoir la réponse
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

jaPBe a été fait avec PureBASIC ? si oui alors c'est possible
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Aranoth a écrit :jaPBe a été fait avec PureBASIC ? si oui alors c'est possible
Oui, jaPBe est fait avec PureBasic.

Pour le code source, c'est ici

Chris :)
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

Je m'y retrouve pas dans les sources de jaPBe... :? :(
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Il me semble que JAPBE utilise aussi une Dll orientée gestion éditeur.

Pour les couleurs, si l'éditorgadget utilise un RichEdit il faut s'orienter vers les messages EM_SETCHARFORMAT (mettre la couleur) et EM_SETCHARFORMAT (retrouver la couleur) et remplir la/les structures CHARFORMAT et CHARFORMAT2 pour formater le texte, couleur, police etc.

Si c'est bien un RichEdit, El_Choni a fait une librairie pour les RichEdit qui pourrait peut-être fonctionner, mais je ne sais pas car je ne l'ai jamais utilisé.

Librairie dispo sur le site (exxxxxxxxxxxxxxcelent) PureArea
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

ok merci, je met ca de coté: je verrai plus tard
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

SI c'est bien un RicheEdit, la lib de El_Choni permet de mettre les couleurs, alors essaye.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ce serait intéressant d'inclure les possibilités de formattage dans l'éditor gadget.

Je me penche sur le sujet avec ce petit bout de code:

Code : Tout sélectionner

If OpenWindow(0,0,0,322,150,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
  EditorGadget (0,8,8,306,133,#PB_Container_Raised) 
  AddGadgetItem(0,-1,"Texte en couleur")
  #SCF_ALL = $4
  format.CHARFORMAT
  format\cbSize=SizeOf(format)
  format\dwMask=#CFM_COLOR
  format\crTextColor=RGB(255,0,255)
  SendMessage_(GadgetID(0),#EM_SETCHARFORMAT,#SCF_ALL, format)
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
Comment faire pour que l'editorgadget lise un fichier formaté et non le formartage en plus du texte ?
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

Ton code fonctionne Nico, mais comment le limiter a une portion du texte ?
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Va faire un tour sur le forum anglais sur ce lien ,il y a un exemple plus complet.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Un autre, j'ai remarqué que la réponse au click sur le bouton(quel que soit le programme) en général n'est pas très bonne, je ne sais pas pourquoi:

Code : Tout sélectionner

Global couleur
couleur=0

Procedure ProcedureCallback(WindowID, Message, wParam, lParam) 
  Resultat = #PB_ProcessPureBasicEvents 
  Select Message
    Case  #WM_Paint
      Debug "ok"
      If StartDrawing(WindowOutput())
        Box(130, 10, 20, 20, couleur)
        StopDrawing()
      EndIf
  EndSelect
  ProcedureReturn Resultat 
EndProcedure 


If OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
  EditorGadget (0,10,80,250,200,#PB_Container_Raised) 
  ButtonGadget(1, 160, 10, 100, 20, "Choisir une couleur")
  ButtonGadget(2, 20, 40, 220, 20, "Appliquer la couleur sur le texte sélectionné")
  CheckBoxGadget(3, 10, 10, 40, 20, "Italic" ) 
  CheckBoxGadget(4, 60, 10, 60, 20, "Souligné") 
  AddGadgetItem(0,-1,"Choisissez une couleur, puis")
  AddGadgetItem(0,-1,"sélectionnez une partie du texte")
  AddGadgetItem(0,-1,"et appliquez.")
  SetWindowCallback(@ProcedureCallback())
  
  Repeat
    EventID = WaitWindowEvent()

    Select EventID
      Case  #PB_EventGadget
        Select EventGadgetID()
          Case 1
            couleur = ColorRequester()
              If StartDrawing(WindowOutput())
                Box(130, 10, 20, 20, couleur)
                StopDrawing()
              EndIf
              
            Case 2
              mask=#CFM_COLOR
              If GetGadgetState(3)
                mask=mask|#CFM_ITALIC
                effect=effect|#CFE_ITALIC
              EndIf
              If GetGadgetState(4)
                mask=mask|#CFM_UNDERLINE
                effect=effect|#CFE_UNDERLINE
              EndIf              
              
              format.CHARFORMAT
              format\cbSize=SizeOf(format)
              format\dwMask=mask
              format\crTextColor=couleur
              format\dwEffects=effect
              SendMessage_(GadgetID(0),#EM_SETCHARFORMAT,#SCF_SELECTION, format)
              
          EndSelect  
     EndSelect
  Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
 
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Comment enregistrer le contenu de l'editorgadget avec le formatage ?

Si quelqu'un sait! :?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Personne n'a essayé d'appliquer les fonctions de la librairie de El_Choni 'RicheEdit' ? Cela peut fonctionner, sinon EL_Choni fournit avec ses lib le code assembleur de ses fonctions

Il a une fonction qui s'appelle StreamFileOut qui permet de tout sauvegarder dans un fichier RTF et la même pour charger un fichier au format RTF.
Dernière modification par Anonyme2 le lun. 22/mars/2004 18:59, modifié 1 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je te remercie Denis, tes indications m'ont permis de trouver l'info sur MSDN.

:D
Répondre