voici comment simuler un input dans un editeur de texte

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)

voici comment simuler un input dans un editeur de texte

Message par dayvid »

Salut, j'avais crue demander de l'aide a ce sujet mais mais mon message
à du être supprimer pour je ne sais qu'elle resond alors je poste un code que j'ai fait
pour répondre a ma propre question

je souhaiterais quand même que vous me disiez si l'ont peut faire autrement

Code : Tout sélectionner

Enumeration
  #Window_0
  #Editor_0
  #Font_Editor_0
  #entrer_clavier
EndEnumeration

Global Couleur_Fenetre = RGB(240, 240, 240)

Global couleur_avent_marge_bord_editeur = RGB(255, 0, 0)
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 couleur_police_editeur = RGB(0, 0, 255)
Global Taille_police_editeur = 9
Global Police_Editeur$ = "cambria"
Global Font_Editor_0

Global Entrer_clavier
Global couleur_du_texte_taper = RGB(255, 0, 0)
Global couleur_fond_texte_taper = RGB(255, 255, 255)
Global couleur_du_texte_entree = RGB(0, 155, 0)
Global couleur_texte_une_fois_entrer = 0

Global Sauvegarde_position_cursseur_X_console
Global Sauvegarde_position_cursseur_Y_console

Procedure deplacer_cursseur_console(ligne, position)
  x = position
  y = ligne
  If x = - 1
    x = - 9999
  EndIf
  
  If y = - 1
    y = 9999
  EndIf
  
  ; Set cursor position 
  REG = GadgetID(#Editor_0) 
  CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0) 
  LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0) 
  If LLength >= x-1 
    CharIdx + x-1 
  EndIf 
  Range.CHARRANGE 
  Range\cpMin = CharIdx 
  Range\cpMax = CharIdx 
  SendMessage_(REG,#EM_EXSETSEL,0,Range) 
EndProcedure 

Procedure.l renvoiller_position_cursseur_X_console() 
  ; returns X-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_X_console = (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
  ProcedureReturn position_cursseur_X_console
EndProcedure 

Procedure.l renvoiller_position_cursseur_Y_console() 
  ; returns Y-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
  ProcedureReturn position_cursseur_Y_console
EndProcedure 

Procedure.l renvoiller_position_relative_cursseur_console() 
  ; returns relative Position of Cursor 
  SendMessage_(GadgetID(#Editor_0),#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_relative_cursseur = Range\cpMax 
  ProcedureReturn position_relative_cursseur
EndProcedure 

Procedure.s renvoiller_position_cursseur_X_Y_console() 
  ; returns X-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_X_console = (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1) 
  ; returns Y-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
  ProcedureReturn Str(position_cursseur_X_console) + ", " +  Str(position_cursseur_Y_console)
EndProcedure

Procedure selection_libre(ligne_de_depart.l, caractere_de_depart.l, ligne_de_fin.l, caractere_de_fin.l)
  ligne_de_depart - 1
  sel.CHARRANGE 
  sel\cpMin = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_depart, 0) + caractere_de_depart - 1 
  
  If ligne_de_fin = -1 
    ligne_de_fin = SendMessage_(GadgetID(#Editor_0), #EM_GETLINECOUNT, 0, 0) - 1 
  EndIf 
  sel\cpMax = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_fin, 0) 
  
  If caractere_de_fin = -1 
    sel\cpMax + SendMessage_(GadgetID(#Editor_0), #EM_LINELENGTH, sel\cpMax, 0) 
  Else 
    sel\cpMax + caractere_de_fin - 1 
  EndIf 
  SendMessage_(GadgetID(#Editor_0), #EM_EXSETSEL, 0, @sel) 
  
EndProcedure 
  
Procedure selectionner_caracteres(ligne, position_depart, position_fin)
  selection_libre(ligne, position_depart, ligne - 1, position_fin)
EndProcedure

Procedure couper_ligne(numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  ligne - 1
  couper_la_ligne = numero_ligne
  selection_libre(couper_la_ligne, 1, couper_la_ligne, 0)
  SendMessage_(GadgetID(#Editor_0), #WM_COPY, -1, 0)
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
  RemoveGadgetItem(#Editor_0, couper_la_ligne - 1)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure copier_ligne(numero_ligne)
  copier_la_ligne = numero_ligne
  selection_libre(copier_la_ligne, 1, copier_la_ligne, 0)
  SendMessage_(GadgetID(#Editor_0), #WM_COPY, -1, 0)
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
EndProcedure
  
Procedure coller_ligne()
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  ligne + 1
  SendMessage_(GadgetID(#Editor_0), #WM_PASTE, 0, 0) 
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure supprimer_ligne(numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  RemoveGadgetItem(#Editor_0, numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure selectionner_ligne(ligne_de_depard, ligne_de_fin)
  ligne_a_selectionner = ligne_de_depard
  selection_libre(ligne_a_selectionner, 1, ligne_de_fin - 1, -1)
EndProcedure
  
Procedure.s entree_clavier(couleur_du_texte_taper, couleur_fond_texte_taper, couleur_du_texte_une_fois_entrer)
  
  Sauvegarde_position_cursseur_X_console = renvoiller_position_cursseur_X_console()
  Sauvegarde_position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
  
  couleur_texte_une_fois_entrer = couleur_du_texte_une_fois_entrer
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 999) 
  
  Ligne$ = GetGadgetItemText(#Editor_0, renvoiller_position_cursseur_Y_console() - 1)
  Texte_editeur$ = GetGadgetText(#Editor_0)
  Nombre_de_ligne = CountGadgetItems(#Editor_0)
  Largeur_fenetre = WindowWidth(#Window_0)
  Hauteur_fenetre = WindowHeight(#Window_0)
  
  UseGadgetList(WindowID(#Window_0))
  
  StartDrawing(WindowOutput(#Window_0))
    DrawingFont(Font_Editor_0)
    Longueur_texte = TextWidth(Ligne$)
    Hauteur_texte = TextHeight(Ligne$)
  StopDrawing()
    
  StringGadget(#entrer_clavier, Longueur_texte + 20, Hauteur_texte * Nombre_de_ligne + 6, Largeur_fenetre - Longueur_texte - 40, Hauteur_texte, "", #PB_String_BorderLess)
  
    ; Gadget Fonts
    SetGadgetFont(#entrer_clavier, LoadFont(#Font_Editor_0, Police_Editeur$, Taille_police_editeur, 0))
    ; Gadget Colors
    PureCOLOR_SetGadgetColor(#entrer_clavier, couleur_du_texte_taper, couleur_fond_texte_taper)
    
    Entrer_clavier = 1
    
  ProcedureReturn entree_clavier$ 
EndProcedure

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
      Font_Editor_0 = LoadFont(#Font_Editor_0, Police_Editeur$, Taille_police_editeur, 0)
      SetGadgetFont(#Editor_0, Font_Editor_0)
      ; Gadget Colors
      PureCOLOR_SetGadgetColor(#Editor_0, couleur_police_editeur, 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(#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)
      
      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()
    
    AddGadgetItem(#Editor_0, -1, "Salut !, quel est ton nom ?: ")
    
    entree_clavier(couleur_du_texte_taper, couleur_fond_texte_taper, RGB(255, 0, 0))
    
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()
;{- Event loop
Repeat
  
  Event = WaitWindowEvent(1)
  
  If Entrer_clavier = 1
    If GetActiveGadget() <> #entrer_clavier And IsGadget(#entrer_clavier)
      SetActiveGadget(#entrer_clavier)
    EndIf
  EndIf
  
  
  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 And Entrer_clavier = 0
    SetActiveGadget(#Editor_0)
  EndIf
  
  position_cursseur_X_console = renvoiller_position_cursseur_X_console()
  position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
  
  ; 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
  
  EventMenu = EventMenu()
  
  Select Event
      
    Case #PB_Event_Gadget
      
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget = #Editor_0
        
      ElseIf EventGadget = #entrer_clavier
        
      EndIf
      
    Case #PB_Event_Menu
      If EventMenu = 999
        entree_clavier = 0
        RemoveKeyboardShortcut(#Window_0, #PB_Shortcut_Return)
        Reponce_entrer_clavier$ = GetGadgetText(#entrer_clavier)
        FreeGadget(#entrer_clavier)
        
        deplacer_cursseur_console(Sauvegarde_position_cursseur_Y_console, Sauvegarde_position_cursseur_X_console)
        format.CHARFORMAT
        format\cbSize = SizeOf(CHARFORMAT) 
        format\dwMask = #CFM_COLOR
        format\crTextColor = couleur_texte_une_fois_entrer
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, " " + Reponce_entrer_clavier$)
        format\crTextColor = couleur_police_editeur
        AddGadgetItem(#Editor_0, -1, "")
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, "Bienvenue a toi ")
        format\crTextColor = couleur_texte_une_fois_entrer
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, Reponce_entrer_clavier$)
        SetActiveGadget(#Editor_0)
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
      
  EndSelect
  
ForEver
;
;}
a plus :D
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: voici comment simuler un input dans un editeur de texte

Message par Ar-S »

c'est tellement plus simple avec 2 éléments différents.(un editor et un stringgadget par exemple)

Code : Tout sélectionner

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
  #AFF
  #REPONSE
  #BT
EndEnumeration
global reponse$

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 390, 247, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      EditorGadget(#AFF, 5, 5, 370, 100, #PB_Editor_ReadOnly)
      SetGadgetText(#AFF, "Bonjour quel est ton nom ?")
      StringGadget(#REPONSE, 5, 115, 365, 25, "")
      ButtonGadget(#BT, 10, 150, 365, 75, "ENVOYER")
    EndIf
  EndIf
EndProcedure
question=1
OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #AFF
        Case #REPONSE
        Case #BT
          select question
            case 1
              SetGadgetText(#aff,"Bonjour "+GetGadgetText(#REPONSE)+chr(10)+"Quel age as tu ?")
              question+1
            case 2
              SetGadgetText(#aff,GetGadgetText(#REPONSE)+" tu as encore de belles années devant toi !"+chr(10)+"Aimes tu PB ?")
              question+1
            case 3
              if Lcase(GetGadgetText(#REPONSE))="non"
                SetGadgetText(#aff,"Alors qu'est-ce tu fous là ??")
              else
                SetGadgetText(#aff,"ça nous fait au moins un point commun")
              endif  
          EndSelect
          
          
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
Forever

~~~~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
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: voici comment simuler un input dans un editeur de texte

Message par venom »

Ar-S a écrit :c'est tellement plus simple avec 2 éléments différents.
quand je lie tes codes dayvid, j'ai toujours l'impression de voir du code a rallonge pour pas grand chose :? Je ne te fait pas un reproche loin de la :wink: mais bon.
Tu utilise aussi purecolor peut etre qu'il prend aussi de la place dans un code, et n'utilisant pas purecolor chez moi tes interfaces ne sont pas les mêmes. :wink: car je supprime toute les lignes purecolor mais cela ne regarde que moi :) .

apres chacun sa façon de coder :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: voici comment simuler un input dans un editeur de texte

Message par Ar-S »

PureColor ne prend pas plus de place que setgadgetcolor ^^
ça vient pas de ça :mrgreen:
~~~~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
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: voici comment simuler un input dans un editeur de texte

Message par venom »

:) oui je me douter bien venant de gnozal :P mais j'avoue ne pas avoir vraiment lue le code :lol: ni a chercher pourquoi





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: voici comment simuler un input dans un editeur de texte

Message par SPH »

venom a écrit :quand je lie tes codes dayvid, j'ai toujours l'impression de voir du code a rallonge pour pas grand chose :?
Normal pour un débutant :wink:

!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: voici comment simuler un input dans un editeur de texte

Message par dayvid »

Ar-S, tu le fait exprès ou quoi ? :| (c'est pas grave :lol: ) ou est l'intéret tu va me dire hein ?

en plus, j'ai bien dit que je voulais simuler un "input" dans un éditeur de texte
je tien a signaler "très gentiment" que quand je demande qu'elle que chose
ou je bloc, je suis parfois obliger de trouvé les réponse par moi même :cry:
et la sa bloc car si je vous demande de l'aide c'est pas pour rien ! :|

oui, je suis un débutant et j'ai parfois besoin d'aide d'accord ?!
parce que j'en est raz le bol de chercher pendent des heures car sa m'énerve
je suis d'accord pour chercher ce que je fait avent de poster
mais s'il vous plait veuillez répondre a mes problèmes que je cherche pas
pendent des heures voir des jour et même parfois des siècles :lol:

Cordiallement :D
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: voici comment simuler un input dans un editeur de texte

Message par Cls »

dayvid a écrit :je suis parfois obliger de trouvé les réponse par moi même :cry:
Oh mon dieu, dans quel monde vit - on ?! :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: voici comment simuler un input dans un editeur de texte

Message par Ar-S »

dayvid a écrit : je tien a signaler "très gentiment" que quand je demande qu'elle que chose
ou je bloc, je suis parfois obliger de trouvé les réponse par moi même :cry:
et la sa bloc car si je vous demande de l'aide c'est pas pour rien ! :|

Code : Tout sélectionner

SNIFF:
Image
je suis trop triste là..
dayvid a écrit :Parce que j'en est raz le bol de chercher pendent des heures car sa m'énerve
je suis d'accord pour chercher ce que je fait avent de poster mais s'il vous plait veuillez répondre a mes problèmes que je cherche pas
pendent des heures voir des jour et même parfois des siècles

Code : Tout sélectionner

Goto SNIFF
trève de plaisanterie,
Tu as un four micro-onde, mais tu voudrais simuler une machine à laver avec.
Je te propose d'utiliser le four et une bassine d'eau car le avec le four tout seul, si c'est faisable, ça doit tout de même pas être fastoche fastoche à mettre en place (et je dis bien si c'est faisable).
~~~~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: voici comment simuler un input dans un editeur de texte

Message par dayvid »

ha ha ha :mrgreen:

je pense que j'ai compris, avec votre gentil touche d'humour qui ma
bien fait rigoler lol, en gros je demande des choses stupide qui ne
sont pas réalisable :(

je voie trop grand c'est bien sa mais pourtant j'ai bien réussie a
en simuler un moi au bout de 50 siècles lol

c'est un genre de réponse comme sa que je voulais c'est tout
et j'aurais voulue que vous m’aidiez a améliorer cella voila tous :D

je demande des choses un peut farfelue des fois je sais bien :|
mais pourtant c’est très important pour moi
ne soyer pas fâché contre moi :wink:

@cls, oui je sais, vue comme sa c'est trop drole vraiment lol
je voulais dire que je demande de l'aide et puisque personne ne répond
"je doit trouvé les réponses pas moi même"

bon alors comment je doit faire ?
comment je doit demander de l'aide ?
comment bien me faire comprendre ?
comment faire pour que ont se moque pas de moi lol ?

je sens les montagnes de mocrie venir a moi :mrgreen:

bon aller mais sinon aucune idée vous ?

"non il n'ont aucune idée et ils en on rien a faire alors lache leur la grappe deux minutes"

mais heu :cry: :mrgreen: :mrgreen: :mrgreen:

bon aller asser plaisenter, ya un truc que j'aimerais bien savoir quand même
comment je fait pour crée un gadget a l'endroit du pointeur de la souris dans l'éditeur de texte ?
oui mon system marche bien mais si je change la police et/ou sa taille, rien ne va plus

tenez j'ai fait sa aussi pour mieux se rendre compte de la chose

Code : Tout sélectionner

Enumeration
  #Window_0
  #Editor_0
  #Font_Editor_0
  #Font_Entrer_clavier
  #entrer_clavier
EndEnumeration

Global Couleur_Fenetre = RGB(240, 240, 240)

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

Global Couleur_Fond_Editeur = RGB(255, 255, 255)
Global couleur_police_editeur = RGB(0, 0, 255)
Global Taille_police_editeur = 9
Global Police_Editeur$ = "cambria"
Global Font_Editor_0

Global Entrer_clavier
Global couleur_du_texte_taper = RGB(0, 0, 255)
Global couleur_fond_texte_taper = RGB(255, 0, 255)
Global couleur_du_texte_entree = RGB(0, 155, 0)
Global couleur_texte_une_fois_entrer = 0
Global Taille_police_Entrer_clavier = 9
Global Police_Entrer_clavier$ = "cambria"
Global Font_Entrer_clavier

Global Sauvegarde_position_cursseur_X_console
Global Sauvegarde_position_cursseur_Y_console

Procedure deplacer_cursseur_console(ligne, position)
  x = position
  y = ligne
  If x = - 1
    x = - 9999
  EndIf
  
  If y = - 1
    y = 9999
  EndIf
  
  ; Set cursor position 
  REG = GadgetID(#Editor_0) 
  CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0) 
  LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0) 
  If LLength >= x-1 
    CharIdx + x-1 
  EndIf 
  Range.CHARRANGE 
  Range\cpMin = CharIdx 
  Range\cpMax = CharIdx 
  SendMessage_(REG,#EM_EXSETSEL,0,Range) 
EndProcedure 

Procedure.l renvoiller_position_cursseur_X_console() 
  ; returns X-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_X_console = (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
  ProcedureReturn position_cursseur_X_console
EndProcedure 

Procedure.l renvoiller_position_cursseur_Y_console() 
  ; returns Y-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
  ProcedureReturn position_cursseur_Y_console
EndProcedure 

Procedure.l renvoiller_position_relative_cursseur_console() 
  ; returns relative Position of Cursor 
  SendMessage_(GadgetID(#Editor_0),#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_relative_cursseur = Range\cpMax 
  ProcedureReturn position_relative_cursseur
EndProcedure 

Procedure.s renvoiller_position_cursseur_X_Y_console() 
  ; returns X-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_X_console = (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1) 
  ; returns Y-Pos of Cursor 
  REG = GadgetID(#Editor_0) 
  SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
  position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
  ProcedureReturn Str(position_cursseur_X_console) + ", " +  Str(position_cursseur_Y_console)
EndProcedure

Procedure selection_libre(ligne_de_depart.l, caractere_de_depart.l, ligne_de_fin.l, caractere_de_fin.l)
  ligne_de_depart - 1
  sel.CHARRANGE 
  sel\cpMin = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_depart, 0) + caractere_de_depart - 1 
  
  If ligne_de_fin = -1 
    ligne_de_fin = SendMessage_(GadgetID(#Editor_0), #EM_GETLINECOUNT, 0, 0) - 1 
  EndIf 
  sel\cpMax = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_fin, 0) 
  
  If caractere_de_fin = -1 
    sel\cpMax + SendMessage_(GadgetID(#Editor_0), #EM_LINELENGTH, sel\cpMax, 0) 
  Else 
    sel\cpMax + caractere_de_fin - 1 
  EndIf 
  SendMessage_(GadgetID(#Editor_0), #EM_EXSETSEL, 0, @sel) 
  
EndProcedure 
  
Procedure selectionner_caracteres(ligne, position_depart, position_fin)
  selection_libre(ligne, position_depart, ligne - 1, position_fin)
EndProcedure

Procedure couper_ligne(numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  ligne - 1
  couper_la_ligne = numero_ligne
  selection_libre(couper_la_ligne, 1, couper_la_ligne, 0)
  SendMessage_(GadgetID(#Editor_0), #WM_COPY, -1, 0)
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
  RemoveGadgetItem(#Editor_0, couper_la_ligne - 1)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure copier_ligne(numero_ligne)
  copier_la_ligne = numero_ligne
  selection_libre(copier_la_ligne, 1, copier_la_ligne, 0)
  SendMessage_(GadgetID(#Editor_0), #WM_COPY, -1, 0)
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
EndProcedure
  
Procedure coller_ligne()
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  ligne + 1
  SendMessage_(GadgetID(#Editor_0), #WM_PASTE, 0, 0) 
  SendMessage_(GadgetID(#Editor_0), #EM_SETSEL, -1, 0)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure supprimer_ligne(numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 1) 
  RemoveGadgetItem(#Editor_0, numero_ligne)
  SetGadgetAttribute(#Editor_0, #PB_Editor_ReadOnly, 0) 
EndProcedure
  
Procedure selectionner_ligne(ligne_de_depard, ligne_de_fin)
  ligne_a_selectionner = ligne_de_depard
  selection_libre(ligne_a_selectionner, 1, ligne_de_fin - 1, -1)
EndProcedure
  
Procedure.s entree_clavier(couleur_du_texte_taper, couleur_fond_texte_taper, couleur_du_texte_une_fois_entrer)
  
  Sauvegarde_position_cursseur_X_console = renvoiller_position_cursseur_X_console()
  Sauvegarde_position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
  
  couleur_texte_une_fois_entrer = couleur_du_texte_une_fois_entrer
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 999) 
  
  Ligne$ = GetGadgetItemText(#Editor_0, renvoiller_position_cursseur_Y_console() - 1)
  Texte_editeur$ = GetGadgetText(#Editor_0)
  Nombre_de_ligne = CountGadgetItems(#Editor_0)
  Largeur_fenetre = WindowWidth(#Window_0)
  Hauteur_fenetre = WindowHeight(#Window_0)
  
  UseGadgetList(WindowID(#Window_0))
  
  StartDrawing(WindowOutput(#Window_0))
    DrawingFont(Font_Editor_0)
    Longueur_texte = TextWidth(Ligne$)
    Hauteur_texte = TextHeight(Ligne$)
  StopDrawing()
    
  StringGadget(#entrer_clavier, Longueur_texte + 20, Hauteur_texte * Nombre_de_ligne + 6, Largeur_fenetre - Longueur_texte - 40, Hauteur_texte, "", #PB_String_BorderLess)
  PureRESIZE_SetGadgetResize(#entrer_clavier, 1, 1, 1, 0)
  
  ; Gadget Fonts
  Font_Entrer_clavier = LoadFont(#Font_Editor_0, Font_Entrer_clavier$, Taille_police_Entrer_clavier, 0)
    SetGadgetFont(#entrer_clavier, LoadFont(#Font_Entrer_clavier, Police_Entrer_clavier$, Taille_police_Entrer_clavier, 0))
    ; Gadget Colors
    PureCOLOR_SetGadgetColor(#entrer_clavier, couleur_du_texte_taper, couleur_fond_texte_taper)
    
    Entrer_clavier = 1
    
  ProcedureReturn entree_clavier$ 
EndProcedure

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
      Font_Editor_0 = LoadFont(#Font_Editor_0, Police_Editeur$, Taille_police_editeur, 0)
      SetGadgetFont(#Editor_0, Font_Editor_0)
      ; Gadget Colors
      PureCOLOR_SetGadgetColor(#Editor_0, couleur_police_editeur, 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(#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)
      
      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()
    AddGadgetItem(#Editor_0, -1, "")
    AddGadgetItem(#Editor_0, -1, "    Salut !, quel est ton nom ?: ")
    
    entree_clavier(couleur_du_texte_taper, couleur_fond_texte_taper, RGB(255, 0, 0))
    
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()
;{- Event loop
Repeat
  
  Event = WaitWindowEvent(1)
  
  If Entrer_clavier = 1
    If GetActiveGadget() <> #entrer_clavier And IsGadget(#entrer_clavier)
      SetActiveGadget(#entrer_clavier)
    EndIf
  EndIf
  
  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 Event = #PB_Event_SizeWindow
    Largeur_entrer_clavier = GadgetWidth(#entrer_clavier)
    SendMessage_(GadgetID(#entrer_clavier), #EM_LIMITTEXT, 999, 0)
  EndIf
  
  If GetActiveGadget() <> #Editor_0 And Entrer_clavier = 0
    SetActiveGadget(#Editor_0)
  EndIf
  
  position_cursseur_X_console = renvoiller_position_cursseur_X_console()
  position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
  
  ; 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
  
  EventMenu = EventMenu()
  
  Select Event
      
    Case #PB_Event_Gadget
      
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget = #Editor_0
        
      ElseIf EventGadget = #entrer_clavier
        
        Largeur_entrer_clavier = GadgetWidth(#entrer_clavier)
        
        StartDrawing(WindowOutput(#Window_0))
          DrawingFont(Font_Entrer_clavier)
          entrer_clavier$ = GetGadgetText(#entrer_clavier)
          Longueur_texte = TextWidth(entrer_clavier$)
          Debug "Longueur_texte " + Str(Longueur_texte)
          Debug "Largeur_entrer_clavier " + Str(Largeur_entrer_clavier)
        StopDrawing()

        If Longueur_texte >= Largeur_entrer_clavier
          SendMessage_(GadgetID(#entrer_clavier), #EM_LIMITTEXT, Len(entrer_clavier$), 0)
        EndIf
        
      EndIf
      
    Case #PB_Event_Menu
      If EventMenu = 999
        entree_clavier = 0
        RemoveKeyboardShortcut(#Window_0, #PB_Shortcut_Return)
        Reponce_entrer_clavier$ = GetGadgetText(#entrer_clavier)
        FreeGadget(#entrer_clavier)
        
        deplacer_cursseur_console(Sauvegarde_position_cursseur_Y_console, Sauvegarde_position_cursseur_X_console)
        format.CHARFORMAT
        format\cbSize = SizeOf(CHARFORMAT) 
        format\dwMask = #CFM_COLOR
        format\crTextColor = couleur_texte_une_fois_entrer
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, " " + Reponce_entrer_clavier$)
        format\crTextColor = couleur_police_editeur
        AddGadgetItem(#Editor_0, -1, "")
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, "    Bienvenue a toi ")
        format\crTextColor = couleur_texte_une_fois_entrer
        SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
        SendMessage_(GadgetID(#Editor_0), #EM_REPLACESEL, 0, Reponce_entrer_clavier$)
        SetActiveGadget(#Editor_0)
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
      
  EndSelect
  
ForEver
;
;}
et j'ai une autre question !!!
comment je fait pour faire en sorte que il n'y est pas
plus de caractères dans le string gadget que sa largeur
j'ai bien tanter sa mais voila regarder
taper que des "a" par exemple
éffacer tout et taper que des "i", ba voila sa marche pas
je voudrait faire en sorte que le string accepte nimporte quoi
du momment que sa ne dépasse pas la largeur du string gadget
voila voila et moi sa cligniotte toujours quand je redimentionne
je parle de l'éditeur de texte et pige pas pourquoi ? HELP !!!
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: voici comment simuler un input dans un editeur de texte

Message par Backup »

.................
Dernière modification par Backup le dim. 20/mars/2011 14:04, modifié 1 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: voici comment simuler un input dans un editeur de texte

Message par GallyHC »

Bonjour,

Tu sais moi non plus je n’ai pas forcement beaucoup de réponse ou sa ne convient pas exactement a ma demande (dans ma tête). Car il est par moment dur de bien décrire son problème et surtout de le faire bien comprendre.

Apres ici, il n’y a que des bénévoles, qui n’ont pas forcement la science infuse, ni par moment le temps de répondre aux questions. Entre le boulot, les projets perso, ect….

Perso je me concentre un max sur mon projet (Maxi-Box et je ne prends pas trop de temps a aide, c’est vrai), mais je prendrais du temps a aide les autres quand j’aurais fini ce projet et surtout que j’aurais avance dans ma propre formation a PB.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: voici comment simuler un input dans un editeur de texte

Message par dayvid »

C’est d'accord et merci a toi @dobro :)

Cependant as tu regarder mon code et la tu tester
oui j'en doute pas, je voilais réaliser un véritable input
et je pence que en faite y'aura pas mieux
parfois nos propre réponse sont les meilleurs
car un proverbe dit que ont est jamais mieux servie que par soit même
oui en théorie sa va de soit mais la en l'occurrence c'est sa

je sais que je pourrais surement reproduire la console de pure basic
dans un éditeur de texte étangs donner mon acenser actuelle
car le plus dur est bien la simulation du input
et elle n’est pas encore à 100 % au points
mais je pensais que avec votre aide sa marcherais mieux voila tous
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: voici comment simuler un input dans un editeur de texte

Message par Backup »

dayvid a écrit :C’est d'accord et merci a toi @dobro :)

Cependant as tu regarder mon code et la tu tester
non ! je ne l'avais pas fait ! :oops:

je trouve que c'est une tres bon code :)

meme si on peut faire autrement (en gadget ou alors en mode console) , le concept me plait bien :)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: voici comment simuler un input dans un editeur de texte

Message par dayvid »

cool merci alors aidez moi a améliorer cella SVP
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