editeur de texte avec bord en couleur personnaliser

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

editeur de texte avec bord en couleur personnaliser

Message par dayvid »

Salut tout le monde !

J'ai une petite histoire a vous raconter mais je vais la raconter en très bref
alors il fut un jour ou je me suis dit:

" tien pourquoi ne pas crée un éditeur de texte
en personnalisant la couleur des bord "

alors je réfléchi-sa pour savoir si j'avais bien tous les outils pour
crée la chose et pour savoir aussi si j'en étais capable

Outils 1: faire disparaître les bord de l'éditeur, réponse 1 = Ok
Outils 1: savoir gérer les graphiques pour crée la chose, réponse 2 = Ok

cool !, alors je me lança dans l'aventure !

Je commença par crée l'éditeur avec PureBasic
puis a dessiner un bord autour de celui-ci

une fois réussie l'opération après très peut de temps
je me suis rendue compte que cella ne fessai pas très jolie
car le curseur de la souris étais coller aux deux bord
de l'éditeur (haut et gauche)

c'est alors que me venue une idée:

" pourquoi ne pas faire
la même chose mais avec plus de bord "

en effet j'avais en tête de faire une marge avent l'éditeur
pour que cella fasse plus jolie

et donc un peut plus tard cella à été accomplie avec sucer !

Voici le code:

Code : Tout sélectionner

Enumeration
  #Window_0
  #Editor_0
  #Font_Editor_0
EndEnumeration

Global Couleur_Fenetre = RGB(240, 240, 240)

Global couleur_avent_marge_bord_editeur = RGB(0, 0, 255)
Global couleur_remplisage_marge_avent_bord_editeur = RGB(255, 255, 255)
Global Couleur_Bord_Editeur = RGB(255, 255, 255)

Global Couleur_Fond_Editeur = RGB(255, 255, 255)
Global Police_Editeur$ = "cambria"

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 620, 400, "Fenêtre", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Window_0))
      
      EditorGadget(#Editor_0, 20, 20, 580, 360) ; #PB_Editor_ReadOnly
      
      ; Gadget Resizing
      PureRESIZE_SetGadgetResize(#Editor_0, 1, 1, 1, 1)
      ; Gadget Fonts
      SetGadgetFont(#Editor_0, LoadFont(#Font_Editor_0, Police_Editeur$, 9, 0))
      ; Gadget Colors
      PureCOLOR_SetGadgetColor(#Editor_0, $0, Couleur_Fond_Editeur)
      
      ; Window Minimum Size
      PureRESIZE_SetWindowMinimumSize(#Window_0, 300, 150)
      
      ; Window Backcolor
      PureCOLOR_SetWindowColor(#Window_0, Couleur_Fenetre)
      
      ; ; pour faire apparaitre les bord de l'editeur
      ; style = GetWindowLong_(GadgetID(#Editor_0), #GWL_EXSTYLE)
      ; newstyle = (style |#WS_EX_CLIENTEDGE)
      ; SetWindowLong_(GadgetID(#Editor_0), #GWL_EXSTYLE, newstyle)
      ; SetWindowPos_(GadgetID(#Editor_0), 0, 0, 0, 0, 0, #SWP_SHOWWINDOW | #SWP_NOSIZE | #SWP_NOMOVE | #SWP_FRAMECHANGED)
      
          ; ceci pour le refaire disparaitre
          style = GetWindowLong_(GadgetID(1), #GWL_EXSTYLE)
          newstyle = style &(~#WS_EX_CLIENTEDGE)
          SetWindowLong_(GadgetID(1), #GWL_EXSTYLE, newstyle)
          SetWindowPos_(GadgetID(1), 0, 0, 0, 0, 0, #SWP_SHOWWINDOW | #SWP_NOSIZE | #SWP_NOMOVE | #SWP_FRAMECHANGED)
      
      SetActiveGadget(#Editor_0)
      
      Sauvegarde_Largeur_Editeur = Largeur_Editeur
      Sauvegarde_Hauteur_Editeur = Hauteur_Editeur
      
      Position_X_Editeur = GadgetX(#Editor_0)
      Position_Y_Editeur = GadgetY(#Editor_0)
      
      Largeur_Editeur = GadgetWidth(#Editor_0) 
      Hauteur_Editeur = GadgetHeight(#Editor_0)
      
      StartDrawing(WindowOutput(#Window_0))
        DrawingMode(#PB_2DDrawing_Outlined )
        
      ; cette commande sert pour dessiner le nouveaux bord
        Box(Position_X_Editeur - 15, Position_Y_Editeur - 15, Largeur_Editeur + 30, Hauteur_Editeur + 30, couleur_avent_marge_bord_editeur)
        Box(Position_X_Editeur - 1, Position_Y_Editeur - 1, Largeur_Editeur + 2, Hauteur_Editeur + 2, Couleur_Bord_Editeur)
        FillArea(Position_X_Editeur - 10, Position_Y_Editeur - 10, -1, couleur_remplisage_marge_avent_bord_editeur)
      
    StopDrawing()
    
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()
;{- Event loop
Repeat
  
  Event = WaitWindowEvent(1)
  
  If Event = #PB_Event_Repaint
    StartDrawing(WindowOutput(#Window_0))
      DrawingMode(#PB_2DDrawing_Outlined )
      
      ; cette commande sert pour éffacer l'encien bord
      Box(Position_X_Editeur - 15, Position_Y_Editeur - 15, Sauvegarde_Largeur_Editeur + 30, Sauvegarde_Hauteur_Editeur + 30, Couleur_Fenetre)
      Box(Position_X_Editeur - 1, Position_Y_Editeur - 1, Sauvegarde_Largeur_Editeur + 2, Sauvegarde_Hauteur_Editeur + 2, Couleur_Fenetre)
      FillArea(Position_X_Editeur - 14, Position_Y_Editeur - 14, -1, Couleur_Fenetre)
      
      ; cette commande sert pour dessiner le nouveaux bord
      Box(Position_X_Editeur - 15, Position_Y_Editeur - 15, Largeur_Editeur + 30, Hauteur_Editeur + 30, couleur_avent_marge_bord_editeur)
      Box(Position_X_Editeur - 1, Position_Y_Editeur - 1, Largeur_Editeur + 2, Hauteur_Editeur + 2, Couleur_Bord_Editeur)
      FillArea(Position_X_Editeur - 10, Position_Y_Editeur - 10, -1, couleur_remplisage_marge_avent_bord_editeur)
      
    StopDrawing()
  EndIf
  
  If GetActiveGadget() <> #Editor_0
    SetActiveGadget(#Editor_0)
  EndIf
  
  ; je vais dessiner des bord en couleur autour de l'editeur
  
  Sauvegarde_Largeur_Editeur = Largeur_Editeur
  Sauvegarde_Hauteur_Editeur = Hauteur_Editeur
  
  Position_X_Editeur = GadgetX(#Editor_0)
  Position_Y_Editeur = GadgetY(#Editor_0)
  
  Largeur_Editeur = GadgetWidth(#Editor_0) 
  Hauteur_Editeur = GadgetHeight(#Editor_0)
  
  If Sauvegarde_Largeur_Editeur <> Largeur_Editeur Or Sauvegarde_Hauteur_Editeur <> Hauteur_Editeur
    
    StartDrawing(WindowOutput(#Window_0))
      DrawingMode(#PB_2DDrawing_Outlined )
      
      ; cette commande sert pour éffacer l'encien bord
      Box(Position_X_Editeur - 15, Position_Y_Editeur - 15, Sauvegarde_Largeur_Editeur + 30, Sauvegarde_Hauteur_Editeur + 30, Couleur_Fenetre)
      Box(Position_X_Editeur - 1, Position_Y_Editeur - 1, Sauvegarde_Largeur_Editeur + 2, Sauvegarde_Hauteur_Editeur + 2, Couleur_Fenetre)
      FillArea(Position_X_Editeur - 14, Position_Y_Editeur - 14, -1, Couleur_Fenetre)
      
      ; cette commande sert pour dessiner le nouveaux bord
      Box(Position_X_Editeur - 15, Position_Y_Editeur - 15, Largeur_Editeur + 30, Hauteur_Editeur + 30, couleur_avent_marge_bord_editeur)
      Box(Position_X_Editeur - 1, Position_Y_Editeur - 1, Largeur_Editeur + 2, Hauteur_Editeur + 2, Couleur_Bord_Editeur)
      FillArea(Position_X_Editeur - 10, Position_Y_Editeur - 10, -1, couleur_remplisage_marge_avent_bord_editeur)
      
    StopDrawing()
    
  EndIf
  
  
  Select Event
      
    Case #PB_Event_Gadget
      
      EventGadget = EventGadget()
      EventType = EventType()
      EventMenu = EventMenu()
      
      If EventGadget = #Editor_0
        
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
      
  EndSelect
  
ForEver
;
;}
Par contre sa clignote si ont retaille la fenêtre
et cella ce fait pas jolie et " SmartWindowRefresh() "
ne resous absolument résous rien du tous

et a mon avis cella m'étonnerais que cella puisse s'arranger
en fin en tous qu'à mois je ne sait pas comment faire

voilà, voilà !, et sinon savez-vous comment l'ont peut faire
un système identique de " input " comme dans la console de PureBasic ?

Je me suis souvent pencher sur la question mais sans grand résulta

Vous pensez que ce n'est pas possible ?
Sa doit bien pouvoir ce faire quand même !?

Pouvez-vous m'indiquer vos idées Svp ?

J'ai bien une petite idée mais je bloc sur un point, il faudrait trouvé un moyen
de crée un gadget comme un string gadget par exemple à l'endroit
exacte du curseur dans l'éditeur mais comment fait t-on une t-elle chose ?

X et Y ne marche pas du tous étant donner que ce n'est pas la
même échelle que pour la position d'un gadget

le mieux serais de calculer la position exacte du curseur
dans la fenêtre elle même un peut comme si l'ont
prenais une règle et que l'ont calculais la distance qu'il
y à entre le bord gauche et le bord haut de la fenêtre

Voila pour mon problème, a plus !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: editeur de texte avec bord en couleur personnaliser

Message par SPH »

dayvid a écrit :Par contre sa clignote si ont retaille la fenêtre
Nan, ca ne clignote pas chez moi sur XPSP3
dayvid a écrit :voilà, voilà !, et sinon savez-vous comment l'ont peut faire
un système identique de " input " comme dans la console de PureBasic ?
Oui, utiliser un tube de gouach noir et la meme fonte que console. C'est vrai quoi, pourquoi faire beau ce que l'on peux faire moche ! :P
dayvid a écrit :Je me suis souvent pencher sur la question mais sans grand résulta
En vrai ?
dayvid a écrit :Vous pensez que ce n'est pas possible ?
Oui
dayvid a écrit :Sa doit bien pouvoir ce faire quand même !?
Oui oui
dayvid a écrit :Pouvez-vous m'indiquer vos idées Svp ?
Comme les gothiques, du noir, du noir, du noir...

Sinon, ton histoire est tres triste !! Je me demande ce qu'est devenu le nounours a la fin ! :mrgreen:

PS : j'aime ta fenetre, il y a un petit coté pro (en vrai!!!)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: editeur de texte avec bord en couleur personnaliser

Message par dayvid »

merci SPH !

si sa cligniotte quand tu redimentionne la fenêtre
regarde bien, redimentionne a la souris évidement :lol:

et j'ai tester sous XP et c'est la même chose :?

sinon est-ce éxprès que tu ne réponde pas a ma question :|
tu me donne pas de solution, juste des mocrie non :?:
pourquoi te moque tu de moi hein ? :| , poste un code au lieux de te foutre de moi banane :wink: :mrgreen: (je rigole)

pourquoi quand je demande de l'aide sa fait sa :cry:
ya surement un os quelque par :?

ah oui merci pour la fenêtre
c'est plus sympa la quand même non :)
Sinon, ton histoire est tres triste !! Je me demande ce qu'est devenu le nounours a la fin !
pardon ? je ne comprend pas :|, qu'elle nournours 8O
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: editeur de texte avec bord en couleur personnaliser

Message par SPH »

dayvid a écrit :merci SPH !

si sa cligniotte quand tu redimentionne la fenêtre
regarde bien, redimentionne a la souris évidement :lol:
J'ai bien regardé et j'ai reverifié : AUCUN clignotement :!:

Nan je ne me moque pas de toi. Mais tu demandes des choses si evidentes que je ne sais quoi te repondre. Exemple : comment rendre une fenetre pareil a la fenetre CONSOLE ? Reponse : utilise un fond noir et un cadre noir :wink:
Cependant, je ne suis pas fortiche en fenetre, donc je laisse d'autres repondre.
Image

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: editeur de texte avec bord en couleur personnaliser

Message par dayvid »

c'est pas ce que j'ai demander SPH relit bien mon garçon
j'ai dit et je le redit encore une autre fois pour ceux qui n'ont toujours pas compris

"COMMENT SIMULER UN INPUT DANS UN EDITEUR DE TEXTE"

j'éspère avoir été asser clair cette fois ci :mrgreen:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: editeur de texte avec bord en couleur personnaliser

Message par Ar-S »

Perso je t'ai repondu dans l'autre topic..

Juste que
et donc un peut plus tard cella à été accomplie avec sucer !
m'a fait exploser de rire Image
~~~~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
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: editeur de texte avec bord en couleur personnaliser

Message par dayvid »

a oui pourquoi dit moi :P
je sais que des fois je dijoncte mais bon c'est la vie lol
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre