gérer la couleur, la police dans un strig gadget
Publié : sam. 21/nov./2009 15:27
voila je cherche une solution pour pouvoir gérer la couleur et la police dans un string gadget
Forums PureBasic - Français
http://forums.purebasic.com/french/
Ce gadget supporte les commandes SetGadgetColor() et GetGadgetColor() avec les valeurs 'TypeCouleur' suivantes:
Code : Tout sélectionner
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
Enumeration
#String_0
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 410, 55, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
FontID1 = LoadFont(1, "Comic Sans MS", 14, #PB_Font_Bold)
StringGadget(#String_0, 10, 10, 390, 40, "Voila j'ai changer la police et la couleur")
SetGadgetFont(#String_0, FontID1)
SetGadgetColor(#String_0, #PB_Gadget_FrontColor, RGB(128,52,250))
SetGadgetColor(#String_0, #PB_Gadget_BackColor, RGB(0,0,0))
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
dayvid a écrit :ho comme c'est génial, il me prend pour un...
je te remerci mais ont c'est pas comprie la
poutemps je suis claire
PERSONNALISER LE TEXTE VOULUE
Code : Tout sélectionner
;********************
; STIF
; Search Text In File
;
; kwandjeen
;
; fevrier 2009
;********************
;recherche un texte dans des fichiers
;affiche les fichiers et la ligne ou le texte à été trouvé
Enumeration
#window
#explorer
#bouton_recherche
#bouton_reset
#texte_a_chercher
#liste_resultat
#window_editeur
#editeur_fichier
EndEnumeration
Structure fichier
chemin.s
position.l
EndStructure
Global NewList liste_fichier.fichier()
#CFM_BACKCOLOR = $4000000
#SCF_ALL = 4
; --> Structure EditorGadget
Structure CHARFORMAT2_
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
nullPad.w
wWeight.w
sSpacing.w
crBackColor.l
LCID.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
; --> début et fin de chaine
Global editFind.FINDTEXT
editFind\chrg\cpMin = 0
editFind\chrg\cpMax = -1
Global editFormat.CHARFORMAT2_
editFormat\cbSize = SizeOf(CHARFORMAT2_)
editFormat\dwMask = #CFM_BACKCOLOR
editFormat\crBackColor = RGB(128, 200, 200)
Global defaultFormat.CHARFORMAT2_
defaultFormat\cbSize = SizeOf(CHARFORMAT2_)
defaultFormat\dwMask = #CFM_BACKCOLOR
defaultFormat\crBackColor = RGB(255, 255, 223)
;----- récup editor change color
Procedure Editor_BackColor(Gadget, Color.l)
format.CHARFORMAT2_
format\cbSize = SizeOf(CHARFORMAT2_)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
format\crBackColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure Editor_Select(Gadget, LineStart.l, CharStart.l, LineEnd.l, CharEnd.l)
sel.CHARRANGE
sel\cpMin = SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, LineStart, 0) + CharStart - 1
If LineEnd = -1
LineEnd = SendMessage_(GadgetID(Gadget), #EM_GETLINECOUNT, 0, 0)-1
EndIf
sel\cpMax = SendMessage_(GadgetID(Gadget), #EM_LINEINDEX, LineEnd, 0)
If CharEnd = -1
sel\cpMax + SendMessage_(GadgetID(Gadget), #EM_LINELENGTH, sel\cpMax, 0)
Else
sel\cpMax + CharEnd - 1
EndIf
SendMessage_(GadgetID(Gadget), #EM_EXSETSEL, 0, @sel)
EndProcedure
; Set the Text color for the Selection
; in RGB format
Procedure Editor_Color(Gadget, Color.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Font Size for the Selection
; in pt
Procedure Editor_FontSize(Gadget, Fontsize.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_SIZE
format\yHeight = FontSize*20
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Font for the Selection
; You must specify a font name, the font doesn't need
; to be loaded
Procedure Editor_Font(Gadget, FontName.s)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_FACE
PokeS(@format\szFaceName, FontName)
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; Set Format of the Selection. This can be a combination of
; the following values:
; #CFM_BOLD
; #CFM_ITALIC
; #CFM_UNDERLINE
; #CFM_STRIKEOUT
Procedure Editor_Format(Gadget, Flags.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_ITALIC|#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE
format\dwEffects = Flags
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
; -------------------------------------------------------------
Procedure InsertEditorText(gadget,Text$)
ProcedureReturn SendMessage_(GadgetID(gadget),#EM_REPLACESEL,0,Text$)
EndProcedure
Procedure scroll_editor(gadget,valeur)
SendMessage_(GadgetID(gadget),#EM_LINESCROLL,0,valeur)
EndProcedure
Procedure findtext(gadget.l,textToFind$)
; --> Reset search to beginnng
SendMessage_(GadgetID(gadget), #EM_SETSEL, 0, 0)
; --> For resetting to default text
SendMessage_(GadgetID(gadget), #EM_SETCHARFORMAT, #SCF_ALL, defaultFormat)
; --> Split the seaarch words
spaces = CountString(textToFind$, " ")
For i = 1 To spaces+1
editFind\chrg\cpMin = 0
thisFind$ = StringField(textToFind$, i, " ")
editFind\lpstrText = @thisFind$
Repeat
found = SendMessage_(GadgetID(gadget), #EM_FINDTEXT, #FR_DOWN, editFind)
If found > -1
editFind\chrg\cpMin = found+1
; --> Set the selection to colorize
SendMessage_(GadgetID(gadget), #EM_SETSEL, found, found + Len(thisFind$))
; --> Colorize selection background
SendMessage_(GadgetID(gadget), #EM_SETCHARFORMAT, #SCF_SELECTION | #SCF_WORD, editFormat)
EndIf
Until found = -1
Next i
SendMessage_(GadgetID(gadget), #EM_SETSEL, 0, 0)
EndProcedure
;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-**-**-*-**-*-*-*-*-*-*-
Procedure scan(fichier.s,texte$)
chaine$ = ""
compteur_ligne = 0
switch_color = 0
find_chaine = 0
AddGadgetItem(#liste_resultat,-1,fichier)
AddElement(liste_fichier())
liste_fichier()\chemin = fichier
liste_fichier()\position = CountGadgetItems(#liste_resultat)-1
SetGadgetItemColor(#liste_resultat,CountGadgetItems(#liste_resultat)-1,#PB_Gadget_BackColor,RGB(255, 201, 132),0)
If ReadFile(0, fichier)
While Eof(0) = 0
chaine$ = ReadString(0)
If FindString(LCase(chaine$), texte$, 1)
AddGadgetItem(#liste_resultat,-1,chaine$+Chr(10)+Str(compteur_ligne))
find_chaine = 1
If switch_color = -1
SetGadgetItemColor(#liste_resultat,CountGadgetItems(#liste_resultat)-1,#PB_Gadget_BackColor,RGB(228, 237, 255),-1)
EndIf
switch_color = Abs(switch_color)-1
EndIf
compteur_ligne+1
Wend
CloseFile(0)
Else
MessageRequester("STIF", "Lecture du fichier impossible", 0)
EndIf
If find_chaine = 0
AddGadgetItem(#liste_resultat,-1,"----- Pas de résultat -----")
EndIf
EndProcedure
Procedure recherche(texte.s)
For i=0 To CountGadgetItems(#explorer)-1 ;on passe tout les fichiers
;si c'est un fichier et qu'il est sélectionné on fait la recherche
If GetGadgetItemState(#explorer,i) = #PB_Explorer_File|#PB_Explorer_Selected
scan(GetGadgetText(#explorer)+GetGadgetItemText(#explorer,i),texte)
EndIf
Next i
EndProcedure
Procedure chargement_fichier(position.l)
num_ligne$ = GetGadgetItemText(#liste_resultat,position,1)
For i=1 To position
texte$ = GetGadgetItemText(#liste_resultat,position-i,0)
ForEach liste_fichier()
If texte$ = liste_fichier()\chemin
Break 2
EndIf
Next
Next i
OpenWindow(#window_editeur,100,100,800,600,liste_fichier()\chemin,#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
EditorGadget(#editeur_fichier,8,8,784,584)
;lecture du fichier
If ReadFile(0, liste_fichier()\chemin)
While Eof(0) = 0
chaine$ = ReadString(0)
AddGadgetItem(#editeur_fichier,-1,chaine$)
Wend
CloseFile(0)
debut_texte = FindString(GetGadgetItemText(#liste_resultat,position,0),GetGadgetText(#texte_a_chercher),0)
findtext(#editeur_fichier,GetGadgetText(#texte_a_chercher))
Editor_Select(#editeur_fichier,Val(num_ligne$),1,Val(num_ligne$),-1)
Editor_BackColor(#editeur_fichier,RGB(255,200,100))
Editor_Select(#editeur_fichier,0,0,0,0)
scroll_editor(#editeur_fichier,Val(num_ligne$)-CountGadgetItems(#editeur_fichier)+10)
Else
MessageRequester("STIF", "Lecture du fichier impossible", 0)
EndIf
fin =0
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
choix = MessageRequester("Sauvegarde","Voulez vous enregistrer le fichier",#PB_MessageRequester_YesNo)
If choix = #PB_MessageRequester_Yes
fichier$ = SaveFileRequester("Sauvegarde du fichier",liste_fichier()\chemin+".copy", "",0)
If fichier$ <> ""
If OpenFile(0,fichier$)
For i=0 To CountGadgetItems(#editeur_fichier)-1
;chaine$ = Right(GetGadgetItemText(#editeur_fichier,i),(Len(GetGadgetItemText(#editeur_fichier,i))-11))
chaine$ = GetGadgetItemText(#editeur_fichier,i)
WriteStringN(0,chaine$)
Next i
CloseFile(0)
EndIf
EndIf
EndIf
fin = 1
FreeGadget(#editeur_fichier)
CloseWindow(#window_editeur)
EndSelect
Until fin = 1
EndProcedure
If OpenWindow(#window, 0, 0, 1000, 768, "STIF - Searc Text In File", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerListGadget(#explorer, 8, 8, 450, 755, "*.*", #PB_Explorer_MultiSelect)
RemoveGadgetColumn(#explorer,3)
SetGadgetItemAttribute(#explorer,0,#PB_Explorer_ColumnWidth,250)
ButtonGadget(#bouton_recherche,890,8,60,20,"Recherche")
ButtonGadget(#bouton_reset,930,80,60,20,"Clear liste")
StringGadget(#texte_a_chercher,470,8,400,20,"")
ListIconGadget(#liste_resultat,470,50,450,705,"Fichier",350)
AddGadgetColumn(#liste_resultat,1,"Ligne",100)
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton_recherche
If GetGadgetState(#explorer)<>-1
recherche(GetGadgetText(#texte_a_chercher))
EndIf
Case #bouton_reset
ClearGadgetItems(#liste_resultat)
Case #liste_resultat
If EventType() = #PB_EventType_LeftDoubleClick
chargement_fichier(GetGadgetState(#liste_resultat))
EndIf
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
EndIf