à 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
;
;}
