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