Salut a tous !
Voilà je revient car j'ai bien avenser et je vient vous faire voir
Programme principale:
Code : Tout sélectionner
Enumeration 1
#Fenetre_Console
#Page_Console
#Font_console
#Font_Entrer_clavier
#entrer_clavier
EndEnumeration
Global Couleur_Fenetre = RGB(0, 0, 0)
Global couleur_avent_marge_bord_editeur = RGB(0, 0, 0)
Global couleur_remplisage_marge_avent_bord_editeur = RGB(0, 0, 0)
Global Couleur_Bord_Editeur = RGB(0, 0, 0)
Global Couleur_Fond_Editeur = RGB(0, 0, 0)
Global couleur_police_editeur = RGB(255, 255, 255)
Global Couleur_arrier_plant_du_texte = 0
Global Taille_police_editeur = 9
Global Police_Editeur$ = "cambria"
Global Font_Editor_0
Global Entrer_clavier, Reponce_entrer_clavier$
Global couleur_du_texte_taper = RGB(0, 0, 255)
Global couleur_fond_texte_taper = RGB(255, 0, 0)
Global couleur_texte_une_fois_entrer = 0
Global Taille_police_Entrer_clavier = 9
Global Police_Entrer_clavier$ = "cambria"
Global Font_Entrer_clavier
Global couleur_fond_texte_quand_entree
Global couleur_du_texte_quand_entree
Global Police_quand_entree$
Global Taille_police_quand_entree
Global style_gras_quand_entree
Global style_italique_quand_entree
Global style_soulignier_quand_entree
Global style_barrer_quand_entree
Global vitTxt
Global Sauvegarde_position_cursseur_X_console
Global Sauvegarde_position_cursseur_Y_console
Global Ecrire$, Couleur_du_texte, Texte$, style_gras, style_italique, style_soulignier, style_barrer
Global Hauteur_totale_texte, sauvegarde_dernier_texte
Global envoie_requette, requette_terminer
Global Vitesse_ecriture
Global Thread_Fenetre_console
Global creation_entrer_clavier = 0
Global ecrire_alinea = 0, ecrire = 0
Global Reponce_entrer_clavier = 0
Structure CHARFORMAT2_
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
_wPad2.w
wWeight.w
sSpacing.w
crBackColor.l
lcid.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
Structure Selection
StyleTexte.s
CouleurTexte.s
CouleurFondTexte.s
TailleTexte.l
NomPolice.s
EndStructure
Global Caracteristique.Selection\StyleTexte = ""
Global Caracteristique.Selection\CouleurTexte = ""
Global Caracteristique.Selection\CouleurFondTexte = ""
Global Caracteristique.Selection\TailleTexte = 0
Global Caracteristique.Selection\NomPolice = ""
Global NewList reponce_entree_clavier.s()
Procedure.s GetStringStyle(Style.l)
If Style = 0
Style$ = "Aucun"
ElseIf Style = 1
Style$ = "Gras"
ElseIf Style = 2
Style$ = "Italique"
ElseIf Style = 3
Style$ = "Gras + Italique"
ElseIf Style = 4
Style$ = "Soulignier"
ElseIf Style = 5
Style$ = "Gras + Soulignier"
ElseIf Style = 6
Style$ = "Italique + Soulignier"
ElseIf Style = 7
Style$ = "Gras + Italique + Soulignier"
ElseIf Style = 8
Style$ = "Barrer"
ElseIf Style = 9
Style$ = "Gras + Barrer"
ElseIf Style = 10
Style$ = "Italique + Barrer"
ElseIf Style = 11
Style$ = "Gras + Italique + Barrer"
ElseIf Style = 12
Style$ = "Soulignier + Barrer"
ElseIf Style = 13
Style$ = "Gras + Soulignier + Barrer"
ElseIf Style = 14
Style$ = "SItalique + Soulignier + Barrer"
ElseIf Style = 15
Style$ = "Gras + Italique + Soulignier + Barrer"
Else
Style$ = "Inconnue"
EndIf
ProcedureReturn Style$
EndProcedure
Procedure CaracteristiqueSelection()
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
SendMessage_(GadgetID(#Page_Console), #EM_GETCHARFORMAT, #SCF_SELECTION, @format)
Caracteristique.Selection\StyleTexte = GetStringStyle(format\dwEffects)
Rouge = Red(format\crTextColor)
Vert = Green(format\crTextColor)
Bleu = Blue(format\crTextColor)
Caracteristique.Selection\CouleurTexte = "RGB(" + Str(Rouge) + ", " + Str(Vert) + ", " + Str(Bleu) + ")"
Caracteristique.Selection\TailleTexte = format\yHeight / 20
*Police = @format\szFaceName
*NomPolice.String = @*Police
Caracteristique.Selection\NomPolice = *NomPolice\s
format2.CHARFORMAT2_
format2\cbSize = SizeOf(CHARFORMAT2_)
SendMessage_(GadgetID(#Page_Console), #EM_GETCHARFORMAT, #SCF_SELECTION, @format2)
Rouge = Red(format2\crBackColor)
Vert = Green(format2\crBackColor)
Bleu = Blue(format2\crBackColor)
Caracteristique.Selection\CouleurFondTexte = "RGB(" + Str(Rouge) + ", " + Str(Vert) + ", " + Str(Bleu) + ")"
; CaracteristiqueSelection()
;
; Debug Caracteristique.Selection\StyleTexte
; Debug Caracteristique.Selection\CouleurTexte
; Debug Caracteristique.Selection\CouleurFondTexte
; Debug Caracteristique.Selection\TailleTexte
; Debug Caracteristique.Selection\NomPolice
EndProcedure
Procedure.s entree_clavier(couleur_texte_taper, couleur_de_fond_texte_taper, couleur_du_texte_une_fois_entrer)
couleur_du_texte_taper = couleur_texte_taper
couleur_fond_texte_taper = couleur_de_fond_texte_taper
couleur_texte_une_fois_entrer = couleur_du_texte_une_fois_entrer
Reponce_entrer_clavier$ = ""
Entrer_clavier = 1
creation_entrer_clavier = 1
Repeat
Delay(1)
Until Reponce_entrer_clavier$ > ""
ProcedureReturn Reponce_entrer_clavier$
EndProcedure
Procedure ecrire(texte$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, Choix_vitesse_ecriture)
Vitesse_ecriture = Choix_vitesse_ecriture
Couleur_arrier_plant_du_texte = couleur_arrier_plant_texte
Couleur_du_texte = couleur_texte
Police_Editeur$ = police_ecriture$
Taille_police_editeur = taille_de_la_police
style_gras = en_gras
style_italique = en_italique
style_soulignier = en_soulignier
style_barrer = en_barrer
If en_gras = 1
style_gras = #CFM_BOLD
EndIf
If en_italique = 1
style_italique = #CFM_ITALIC
EndIf
If en_soulignier = 1
style_soulignier = #CFM_UNDERLINE
EndIf
If en_barrer = 1
style_barrer = #CFM_STRIKEOUT
EndIf
Ecrire$ = texte$
envoie_requette = 1 ; envoie la requette
Repeat
Delay(Vitesse_ecriture)
Until requette_terminer = 1 ; a éxecuter la requette
requette_terminer = 0
EndProcedure
Procedure ecrire_alinea(texte$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, Choix_vitesse_ecriture)
Vitesse_ecriture = Choix_vitesse_ecriture
Couleur_arrier_plant_du_texte = couleur_arrier_plant_texte
Couleur_du_texte = couleur_texte
Police_Editeur$ = police_ecriture$
Taille_police_editeur = taille_de_la_police
style_gras = en_gras
style_italique = en_italique
style_soulignier = en_soulignier
style_barrer = en_barrer
ecrire_alinea = 1
If en_gras = 1
style_gras = #CFM_BOLD
EndIf
If en_italique = 1
style_italique = #CFM_ITALIC
EndIf
If en_soulignier = 1
style_soulignier = #CFM_UNDERLINE
EndIf
If en_barrer = 1
style_barrer = #CFM_STRIKEOUT
EndIf
Ecrire$ = texte$
envoie_requette = 1 ; envoie la requette
Repeat
Delay(Vitesse_ecriture)
Until requette_terminer = 1 ; a éxecuter la requette
AddGadgetItem(#Page_Console, -1, "")
requette_terminer = 0
ecrire_alinea = 0
EndProcedure
Procedure Reponce(NumeroReponce)
SelectElement(reponce_entree_clavier(), NumeroReponce - 1)
ecrire(reponce_entree_clavier(), RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 1, 0, 0, 0, 0)
LastElement(reponce_entree_clavier())
EndProcedure
Procedure ecrire_lettre_par_lettre(Texte$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, Choix_vitesse_ecriture)
For Affichage = 1 To Len(Texte$)
Caractere$ = Mid(Texte$, Affichage, 1)
If Caractere$ = "."
ecrire_alinea(".", couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
Delay(500)
ElseIf Caractere$ = "?"
ecrire(Caractere$ + ":", couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
reponce$ = entree_clavier(RGB(0, 0, 0), couleur_arrier_plant_texte, RGB(255, 0, 0))
AddElement(reponce_entree_clavier())
reponce_entree_clavier() = Trim(reponce$)
Delay(500)
ElseIf Caractere$ = "«"
ecrire_alinea(" ", couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
ecrire_alinea(" ", couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
ElseIf Caractere$ = "R"
If Mid(Texte$, Affichage + 1, 1) = "["
If Mid(Texte$, Affichage + 2, 1) = "1" Or Mid(Texte$, Affichage + 2, 1) = "2" Or Mid(Texte$, Affichage + 2, 1) = "3"
If Mid(Texte$, Affichage + 3, 1) = "]"
Reponce(Val(Mid(Texte$, Affichage + 2, 1)))
Affichage + 3
Else
ecrire(Caractere$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
EndIf
Else
ecrire(Caractere$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
EndIf
Else
ecrire(Caractere$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
EndIf
Else
ecrire(Caractere$, couleur_texte, couleur_arrier_plant_texte, police_ecriture$, taille_de_la_police, en_gras, en_italique, en_soulignier, en_barrer, 0)
EndIf
Delay(Choix_vitesse_ecriture * 25)
Next
EndProcedure
Procedure Taille_console(Largeur, Hauteur)
ResizeWindow(#Fenetre_Console, #PB_Ignore, #PB_Ignore, Largeur, Hauteur)
EndProcedure
Procedure Titre_console(Titre$)
SetWindowTitle(#Fenetre_Console, Titre$)
EndProcedure
Procedure Couleur_console(couleur_de_la_fenetre, couleur_avent_la_marge_du_bord_editeur, couleur_de_remplisage_marge_avent_bord_editeur, Couleur_du_Bord_Editeur, Couleur_du_Fond_Editeur)
Couleur_Fenetre = couleur_de_la_fenetre
PureCOLOR_SetWindowColor(#Fenetre_Console, Couleur_Fenetre)
couleur_avent_marge_bord_editeur = couleur_avent_la_marge_du_bord_editeur
couleur_remplisage_marge_avent_bord_editeur = couleur_de_remplisage_marge_avent_bord_editeur
Couleur_Bord_Editeur = Couleur_du_Bord_Editeur
PureCOLOR_SetGadgetColor(#Page_Console, couleur_police_editeur, Couleur_du_Fond_Editeur)
EndProcedure
Procedure.l nombre_ligne_console()
If IsGadget(#Page_Console)
nombre_ligne_console = CountGadgetItems(#Page_Console)
ProcedureReturn nombre_ligne_console
EndIf
EndProcedure
Procedure activer_croix_fermeture_console()
If IsWindow(#Fenetre_Console)
; Retourne l'identifiant du menu système
hSysMenu = GetSystemMenu_(WindowID(#Fenetre_Console), #True)
;Mise à jour du menu
DrawMenuBar_(WindowID(#Fenetre_Console))
EndIf
EndProcedure
Procedure desactiver_croix_fermeture_console()
If IsWindow(#Fenetre_Console)
; Retourne l'identifiant du menu système
hSysMenu = GetSystemMenu_(WindowID(#Fenetre_Console), #False)
; Efface un élément du menu
RemoveMenu_(hSysMenu, #SC_CLOSE, #MF_BYCOMMAND)
;Mise à jour du menu
DrawMenuBar_(WindowID(#Fenetre_Console))
EndIf
EndProcedure
Procedure deplacer_cursseur_console(ligne, position)
If IsGadget(#Page_Console)
x = position
y = ligne
If x = - 1
x = - 9999
EndIf
If y = - 1
y = 9999
EndIf
; Set cursor position
REG = GadgetID(#Page_Console)
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)
EndIf
EndProcedure
Procedure.l renvoiller_position_cursseur_X_console()
If IsGadget(#Page_Console)
; returns X-Pos of Cursor
REG = GadgetID(#Page_Console)
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
EndIf
EndProcedure
Procedure.l renvoiller_position_cursseur_Y_console()
If IsGadget(#Page_Console)
; returns Y-Pos of Cursor
REG = GadgetID(#Page_Console)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
ProcedureReturn position_cursseur_Y_console
EndIf
EndProcedure
Procedure.l renvoiller_position_relative_cursseur_console()
If IsGadget(#Page_Console)
; returns relative Position of Cursor
SendMessage_(GadgetID(#Page_Console),#EM_EXGETSEL,0,Range.CHARRANGE)
position_relative_cursseur = Range\cpMax
ProcedureReturn position_relative_cursseur
EndIf
EndProcedure
Procedure.s renvoiller_position_cursseur_X_Y_console()
If IsGadget(#Page_Console)
; returns X-Pos of Cursor
REG = GadgetID(#Page_Console)
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(#Page_Console)
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)
EndIf
EndProcedure
Procedure selection_libre(ligne_de_depart.l, caractere_de_depart.l, ligne_de_fin.l, caractere_de_fin.l)
If IsGadget(#Page_Console)
ligne_de_depart - 1
sel.CHARRANGE
sel\cpMin = SendMessage_(GadgetID(#Page_Console), #EM_LINEINDEX, ligne_de_depart, 0) + caractere_de_depart - 1
If ligne_de_fin = -1
ligne_de_fin = SendMessage_(GadgetID(#Page_Console), #EM_GETLINECOUNT, 0, 0) - 1
EndIf
sel\cpMax = SendMessage_(GadgetID(#Page_Console), #EM_LINEINDEX, ligne_de_fin, 0)
If caractere_de_fin = -1
sel\cpMax + SendMessage_(GadgetID(#Page_Console), #EM_LINELENGTH, sel\cpMax, 0)
Else
sel\cpMax + caractere_de_fin - 1
EndIf
SendMessage_(GadgetID(#Page_Console), #EM_EXSETSEL, 0, @sel)
EndIf
EndProcedure
Procedure selectionner_caracteres(ligne, position_depart, position_fin)
selection_libre(ligne, position_depart, ligne - 1, position_fin)
EndProcedure
Procedure couper_ligne(numero_ligne)
If IsGadget(#Page_Console)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 1)
ligne - 1
couper_la_ligne = numero_ligne
selection_libre(couper_la_ligne, 1, couper_la_ligne, 0)
SendMessage_(GadgetID(#Page_Console), #WM_COPY, -1, 0)
SendMessage_(GadgetID(#Page_Console), #EM_SETSEL, -1, 0)
RemoveGadgetItem(#Page_Console, couper_la_ligne - 1)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 0)
EndIf
EndProcedure
Procedure copier_ligne(numero_ligne)
If IsGadget(#Page_Console)
copier_la_ligne = numero_ligne
selection_libre(copier_la_ligne, 1, copier_la_ligne, 0)
SendMessage_(GadgetID(#Page_Console), #WM_COPY, -1, 0)
SendMessage_(GadgetID(#Page_Console), #EM_SETSEL, -1, 0)
EndIf
EndProcedure
Procedure coller_ligne()
If IsGadget(#Page_Console)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 1)
ligne + 1
SendMessage_(GadgetID(#Page_Console), #WM_PASTE, 0, 0)
SendMessage_(GadgetID(#Page_Console), #EM_SETSEL, -1, 0)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 0)
EndIf
EndProcedure
Procedure supprimer_ligne(numero_ligne)
If IsGadget(#Page_Console)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 1)
RemoveGadgetItem(#Page_Console, numero_ligne)
SetGadgetAttribute(#Page_Console, #PB_Editor_ReadOnly, 0)
EndIf
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 Fenetre_console(a)
If OpenWindow(#Fenetre_Console, 450, 200, 620, 400, "Fenêtre console", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
EditorGadget(#Page_Console, 20, 20, 580, 360, #PB_Editor_ReadOnly)
; Gadget Resizing
PureRESIZE_SetGadgetResize(#Page_Console, 1, 1, 1, 1)
; Gadget Fonts
Font_Editor_0 = LoadFont(#Font_console, Police_Editeur$, Taille_police_editeur, 0)
SetGadgetFont(#Page_Console, Font_Editor_0)
; Gadget Colors
PureCOLOR_SetGadgetColor(#Page_Console, couleur_police_editeur, Couleur_Fond_Editeur)
; Window Minimum Size
PureRESIZE_SetWindowMinimumSize(#Fenetre_Console, 300, 150)
; Window Backcolor
PureCOLOR_SetWindowColor(#Fenetre_Console, Couleur_Fenetre)
; ; pour faire apparaitre les bord de l'editeur
; style = GetWindowLong_(GadgetID(#Page_Console), #GWL_EXSTYLE)
; newstyle = (style |#WS_EX_CLIENTEDGE)
; SetWindowLong_(GadgetID(#Page_Console), #GWL_EXSTYLE, newstyle)
; SetWindowPos_(GadgetID(#Page_Console), 0, 0, 0, 0, 0, #SWP_SHOWWINDOW | #SWP_NOSIZE | #SWP_NOMOVE | #SWP_FRAMECHANGED)
; ceci pour le refaire disparaitre
style = GetWindowLong_(GadgetID(#Page_Console), #GWL_EXSTYLE)
newstyle = style &(~#WS_EX_CLIENTEDGE)
SetWindowLong_(GadgetID(#Page_Console), #GWL_EXSTYLE, newstyle)
SetWindowPos_(GadgetID(#Page_Console), 0, 0, 0, 0, 0, #SWP_SHOWWINDOW | #SWP_NOSIZE | #SWP_NOMOVE | #SWP_FRAMECHANGED)
SetActiveGadget(#Page_Console)
Sauvegarde_Largeur_Editeur = Largeur_Editeur
Sauvegarde_Hauteur_Editeur = Hauteur_Editeur
Position_X_Editeur = GadgetX(#Page_Console)
Position_Y_Editeur = GadgetY(#Page_Console)
Largeur_Editeur = GadgetWidth(#Page_Console)
Hauteur_Editeur = GadgetHeight(#Page_Console)
StartDrawing(WindowOutput(#Fenetre_Console))
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()
Else
EndIf
Repeat
Event = WindowEvent()
If creation_entrer_clavier = 1
creation_entrer_clavier = 0
Sauvegarde_position_cursseur_X_console = renvoiller_position_cursseur_X_console()
Sauvegarde_position_cursseur_Y_console = renvoiller_position_cursseur_Y_console()
Ligne$ = GetGadgetItemText(#Page_Console, renvoiller_position_cursseur_Y_console() - 1)
Texte_editeur$ = GetGadgetText(#Page_Console)
Nombre_de_ligne = CountGadgetItems(#Page_Console)
Largeur_fenetre = WindowWidth(#Fenetre_Console)
Hauteur_fenetre = WindowHeight(#Fenetre_Console)
Font_Entrer_clavier = LoadFont(#Font_console, Police_Editeur$, Taille_police_editeur, 0)
StartDrawing(WindowOutput(#Fenetre_Console))
DrawingFont(Font_Entrer_clavier)
Longueur_texte = TextWidth(Ligne$)
Hauteur_texte = TextHeight(Ligne$)
StopDrawing()
UseGadgetList(WindowID(#Fenetre_Console))
StringGadget(#entrer_clavier, Longueur_texte + 23, 20 + 2 + Hauteur_totale_texte, Largeur_fenetre - Longueur_texte - 40, Hauteur_texte, "", #PB_String_BorderLess)
; Gadget Fonts
SetGadgetFont(#entrer_clavier, LoadFont(#Font_Entrer_clavier, Police_Editeur$, Taille_police_editeur, 0))
; Gadget Colors
PureCOLOR_SetGadgetColor(#entrer_clavier, couleur_du_texte_taper, couleur_fond_texte_taper)
PureRESIZE_SetGadgetResize(#entrer_clavier, 1, 1, 1, 0)
AddKeyboardShortcut(#Fenetre_Console, #PB_Shortcut_Return, 999)
ElseIf Reponce_entrer_clavier = 1
Reponce_entrer_clavier = 0
Reponce_entrer_clavier$ = GetGadgetText(#entrer_clavier)
FreeGadget(#entrer_clavier)
Entrer_clavier = 0
RemoveKeyboardShortcut(#Fenetre_Console, #PB_Shortcut_Return)
deplacer_cursseur_console(Sauvegarde_position_cursseur_Y_console, Sauvegarde_position_cursseur_X_console)
SetActiveGadget(#Page_Console)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR|#CFM_ITALIC|#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE
format\dwEffects = style_italique|style_gras|style_barrer|style_soulignier
format\crTextColor = couleur_texte_une_fois_entrer
SendMessage_(GadgetID(#Page_Console), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
SendMessage_(GadgetID(#Page_Console), #EM_REPLACESEL, 0, " " + Reponce_entrer_clavier$)
Hauteur_totale_texte + sauvegarde_dernier_texte
AddGadgetItem(#Page_Console, -1, "")
EndIf
If Entrer_clavier = 1
If GetActiveGadget() <> #entrer_clavier And IsGadget(#entrer_clavier)
SetActiveGadget(#entrer_clavier)
EndIf
EndIf
If Event = #PB_Event_Repaint
StartDrawing(WindowOutput(#Fenetre_Console))
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
If IsGadget(#entrer_clavier)
Largeur_entrer_clavier = GadgetWidth(#entrer_clavier)
SendMessage_(GadgetID(#entrer_clavier), #EM_LIMITTEXT, 999, 0)
EndIf
EndIf
If IsGadget(#Page_Console)
If GetActiveGadget() <> #Page_Console And Entrer_clavier = 0
SetActiveGadget(#Page_Console)
EndIf
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(#Page_Console)
Position_Y_Editeur = GadgetY(#Page_Console)
Largeur_Editeur = GadgetWidth(#Page_Console)
Hauteur_Editeur = GadgetHeight(#Page_Console)
If Sauvegarde_Largeur_Editeur <> Largeur_Editeur Or Sauvegarde_Hauteur_Editeur <> Hauteur_Editeur
StartDrawing(WindowOutput(#Fenetre_Console))
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 envoie_requette = 1 ; à ressue la requette
envoie_requette = 0
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_FACE|#CFM_SIZE|#CFM_COLOR|#CFM_ITALIC|#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE
format\dwEffects = style_italique|style_gras|style_barrer|style_soulignier
format\crTextColor = Couleur_du_texte
format\yHeight = Taille_police_editeur * 20
Fond_ecriture = LoadFont(#Font_console, Police_Editeur$, Taille_police_editeur, style_italique|style_gras|style_barrer|style_soulignier)
PokeS(@format\szFaceName, Police_Editeur$)
format2.CHARFORMAT2_
format2\cbSize = SizeOf(CHARFORMAT2_)
format2\dwMask = $4000000 ; = BACKCOLOR
format2\crBackColor = Couleur_arrier_plant_du_texte
ecrie_le_texte:
If IsGadget(#Page_Console)
SendMessage_(GadgetID(#Page_Console), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
SendMessage_(GadgetID(#Page_Console), #EM_SETCHARFORMAT, #SCF_SELECTION, @format2)
SendMessage_(GadgetID(#Page_Console), #EM_REPLACESEL, 0, Ecrire$)
If ecrire_alinea = 1
StartDrawing(WindowOutput(#Fenetre_Console))
DrawingFont(Fond_ecriture)
Longueur_texte = TextWidth(Ecrire$)
Hauteur_texte = TextHeight(Ecrire$)
Hauteur_totale_texte + Hauteur_texte
sauvegarde_dernier_texte = Hauteur_texte
StopDrawing()
EndIf
Ecrire$ = ""
Else
Goto ecrie_le_texte
EndIf
requette_terminer = 1 ; à éxecuter la requette, envoie la reponce
EndIf
EventMenu = EventMenu()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Page_Console
ElseIf EventGadget = #entrer_clavier
If IsGadget(#entrer_clavier)
; calcule de la longueur totale de la ligne de texte et du dernier caractère de la ligne
Largeur_entrer_clavier = GadgetWidth(#entrer_clavier)
StartDrawing(WindowOutput(#Fenetre_Console))
DrawingFont(Font_Entrer_clavier)
entrer_clavier$ = GetGadgetText(#entrer_clavier)
Longueur_texte = TextWidth(entrer_clavier$)
dernier_caractere$ = Mid(entrer_clavier$, Len(entrer_clavier$) - 1, 1)
longueur_dernier_caractere = TextWidth(dernier_caractere$)
StopDrawing()
If Not Longueur_texte >= Largeur_entrer_clavier - longueur_dernier_caractere
SendMessage_(GadgetID(#entrer_clavier), #EM_LIMITTEXT, 999, 0)
EndIf
If Longueur_texte >= Largeur_entrer_clavier - (longueur_dernier_caractere + 5)
SendMessage_(GadgetID(#entrer_clavier), #EM_LIMITTEXT, Len(entrer_clavier$), 0)
EndIf
EndIf
EndIf
Case #PB_Event_Menu
If EventMenu = 999
Reponce_entrer_clavier = 1
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Fenetre_Console
CloseWindow(#Fenetre_Console)
End
EndIf
EndSelect
If Event = 0
Delay(1)
EndIf
ForEver
EndProcedure
Procedure Ouvrir_console()
Thread_Fenetre_console = CreateThread(@Fenetre_console(), 0)
Delay(100)
EndProcedure
Procedure Attendre_evenement_console()
WaitThread(Thread_Fenetre_console)
EndProcedure
et le code, faut inclure le code principale
avent ce code:
Code : Tout sélectionner
Ouvrir_console()
Titre_console("Console")
Taille_console(620, 400)
Couleur_console(RGB(255, 255, 255), RGB(255, 255, 255), RGB(255, 255, 255), RGB(255, 255, 255), RGB(255, 255, 255))
; ; exemple 1
; For a = 1 To 23 ; 23 ligne
; For b = 1 To 20 ; 20 X abcd a la suite
; ecrire("a", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 1, 1, 1, 1, 1)
; ecrire("b", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 1, 1, 1, 1, 1)
; ecrire("c", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 1, 1, 1, 1, 1)
; ecrire("d", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 1, 1, 1, 1, 1)
; Next
; ecrire_alinea("", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 1, 1, 1, 1, 1)
; Next
; ;exemple 2
; For a = 1 To 24 ; 24 ligne
; For b = 1 To 38 ; 38 X abcd a la suite
; ecrire(" ", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 0, 0, 0, 0, 0)
; Next
; ecrire_alinea("", RGB(Random(255), Random(255), Random(255)), RGB(Random(255), Random(255), Random(255)), "cambria", 9, 0, 0, 0, 0, 0)
; Next
; ;exemple 3
; ecrire("Bienvenue ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("sur la ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("console ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire_alinea("graphique !", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
;
; ecrire("Pour ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("commencer ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("dit-moi ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("comment ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("tu ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("t'appel:", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; reponce$ = entree_clavier(RGB(0, 0, 0), RGB(255, 255, 255), RGB(255, 0, 0))
;
; ecrire("Bienvenue ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("a toi ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire_alinea(reponce$, RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 1, 0, 0, 0, 0)
;
; ecrire("Quel ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("âge ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire("à tu ", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire(reponce$, RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 1, 0, 0, 0, 0)
; ecrire(" ?:", RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 1, 0, 0, 0, 0)
; reponce$ = entree_clavier(RGB(0, 0, 0), RGB(255, 255, 255), RGB(255, 0, 0))
; ecrire("Tu as ", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ecrire(reponce$, RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 1, 0, 0, 0, 0)
; ecrire(" ans !", RGB(255, 0, 0), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 0)
; ; ;exemple 4
; Texte$ = "Salut, je m'appel Brayane, j'habite a venise et j'ai 8 ans."
; Texte$ + "et toi comment t'apel-tu ?"
; Texte$ + "tu habite ou ?"
; Texte$ + "et quel âge as tu ?"
; Texte$ + "«"
; Texte$ + "Bienvenue a toi R[1], tu habite à R[2] et tu as R[3] ans"
;
; ecrire_lettre_par_lettre(Texte$, RGB(0, 0, 255), RGB(255, 255, 255), "cambria", 9, 0, 0, 0, 0, 4)
Attendre_evenement_console()
Oui c'est encore une console graphique mais améliorer
bien par conte j'ai un pitit soucis avec les string gadget qui suivent
la police ne ce place pas éxactement a la bonne position
il me faudrait la commande qui permet de mesurer la hauteur exacte
de tous les ligne de l'éditeur pour que ce soit plus précis
si vous essayer sa sous 4.40, les bors de l'éditeur ce cache bien
mais au dessue de cette version, sa ne marche plus, pourquoi ?
le string gadget n'est plus a la même position aussi a la version 4.40
si vous pouvez m'aider un pitit peut ce serais cool
voilà a plus