Je calcul mes Strings... et mes TexteGadgets
Publié : mer. 06/mars/2019 14:38
Bonjour a tous
Un petit outil sans prétention, pour ceux qui comme moi tatonnent pour calculer la largeur et la hauteur des StringGadgets et TexteGadgets en fonction d'une police de caractères.
Cet outil permet:
1° De choisir et tester une police
2° De définir la largeur et la hauteur du gadget
3° De copier dans le presse papier le code, pour l'inclure dans vos programmes
Les améliorations seront bien venues
Un petit outil sans prétention, pour ceux qui comme moi tatonnent pour calculer la largeur et la hauteur des StringGadgets et TexteGadgets en fonction d'une police de caractères.
Cet outil permet:
1° De choisir et tester une police
2° De définir la largeur et la hauteur du gadget
3° De copier dans le presse papier le code, pour l'inclure dans vos programmes
Les améliorations seront bien venues
Code : Tout sélectionner
;*** Calcul la largueur, hauteur d'un StringGadget ou TexteGadget ****
;*** en fonction des paramètres d'une police choisie. Window seulement****
;*** MLD le 06/03/2019. PB 5.70 LTS(X86) Cochez la case Enable DPI aware***
;*** Utilisation libre ***
#FP = 1:#List1 = 2:#Eticlist1 = 3:#List2 = 4:#Eticlist2 = 5:#frame1 = 6:#CheckBox1 =7:#CheckBox2 =8:#CheckBox3 =9:#CheckBox4 =10:#CheckBox5 =11
#EticChec = 12:#frame2 = 20:#texttest = 21:#textnbp = 22:#frame3 = 23:#CheckBoxTG =24:#CheckBoxSG =25:#Eticpara = 26:#Stringpara = 27
#CheckBoxmagnin =28:#CheckBoxmagseul =29:#CheckBoxchif =30:#frame4 = 31:#texres1 = 32:#texres2 = 33:#texres3 = 34:#texres4 = 35
#texres5 = 36:#texcodgad = 37:#texres6 = 38:#editgad = 39:#texpp = 40:#CheckBoxpp1 =41:#CheckBoxpp2 =42:#BTpp = 43:#BTraz = 44:#BTstop = 45
#canvas = 50
Global NewList NomFont.s()
Global Lggad
Global Htgad
Global FontID1 = LoadFont(60,"Tahoma",12,#PB_Font_Bold)
Global FontID5 = LoadFont(61,"Tahoma",10)
Declare EnumFontFamExProc(*lpelfe.ENUMLOGFONTEX,*lpntme.NEWTEXTMETRICEX,FontType,lParam)
Declare testPolice(Ft$,St1,St2,st3,st4,st5)
Procedure EnumFontFamExProc(*lpelfe.ENUMLOGFONTEX,*lpntme.NEWTEXTMETRICEX,FontType,lParam)
NomFont$ = PeekS(@*lpelfe\elfFullName)
Select FontType
Case #TRUETYPE_FONTTYPE
Type$ = "[TT] "
EndSelect
dp =0
ForEach NomFont()
If NomFont() = Type$ + NomFont$:dp=1:EndIf
Next
If dp =0
AddElement(NomFont())
NomFont() = Type$ + NomFont$ :Type$ = ""
EndIf
ProcedureReturn #True
EndProcedure
Procedure VisuEmumFont()
lf.LOGFONT
lf\lfCharset = #DEFAULT_CHARSET
hdc = GetDC_(WindowID(1))
EnumFontFamiliesEx_(hdc,lf,@EnumFontFamExProc(),0,0)
ReleaseDC_(WindowID(1),hdc)
SortList( NomFont.s(),#PB_Sort_Ascending)
ForEach NomFont()
AddGadgetItem(2,-1,NomFont())
Next
EndProcedure
Procedure testPolice(Ft$,st1,St2,st3,st4,st5)
FontID2 = LoadFont(101,Ft$,14,st1|St2|st3|st4|st5)
SetGadgetFont(21,FontID2)
EndProcedure
Procedure LH(Ft$,tp,st1,st2,st3,st4,st5)
tw = 0:th = 0
FontID3 = LoadFont(102,Ft$,tp,st1|st2|st3|st4|st5)
For t= 28 To 30
If GetGadgetState(t) = #PB_Checkbox_Checked:Break:EndIf
Next
Select t
Case 28
a$ ="ABwbikMplR"
Case 29
a$ ="ABWJLIPYFS"
Case 30
a$ ="0123456789"
EndSelect
StartDrawing(CanvasOutput(50))
DrawingFont(FontID3)
DrawText(50, 80,a$,$0, 0)
If GetGadgetState(24) = #PB_Checkbox_Checked ;texteGad
tw = ((TextWidth(a$)/10)* Val(GetGadgetText(27))) + 3
th = TextHeight(a$) - 4
texteGad$ = "TextGadget(#Gadget, X, Y,"+ Str(tw)+"," + Str(th)+", Texte$)"
SetGadgetText(37,texteGad$)
EndIf
If GetGadgetState(25) = #PB_Checkbox_Checked ;StringGad
tw = ((TextWidth(a$)/10)* Val(GetGadgetText(27))) + 3
th = TextHeight(a$)
stringGad$ = "StringGadget(#Gadget, X, Y,"+ Str(tw)+"," + Str(th)+", Texte$)"
SetGadgetText(37,stringGad$)
EndIf
SetGadgetText(33,Str(tw)):SetGadgetText(35,Str(th))
copfont$ = "FontID = LoadFont((#Police," + Chr(34) + Ft$+ Chr(34) + "," + Str(tp)+ "," + Str(st1) + "|" + Str(st2)+ "|" + Str(st3)+ "|" + Str(st4)+ "|" + Str(st5)+ ")"
copfont2$ ="SetGadgetFont(#Gadget,FontID)"
ClearGadgetItems(39)
AddGadgetItem(39,-1,copfont$)
AddGadgetItem(39,-1,copfont2$)
StopDrawing()
EndProcedure
Procedure raz ()
SetGadgetText(2,"[TT] Tahoma"):SetGadgetText(4,"14"):SetGadgetText(27,"1")
SetGadgetText(4,"14"):SetGadgetText(27,"1")
SetGadgetState(7,#PB_Checkbox_Unchecked):SetGadgetState(8,#PB_Checkbox_Unchecked)
SetGadgetState(9,#PB_Checkbox_Unchecked):SetGadgetState(10,#PB_Checkbox_Unchecked):SetGadgetState(11,#PB_Checkbox_Unchecked)
SetGadgetState(24,#PB_Checkbox_Checked):SetGadgetState(25,#PB_Checkbox_Unchecked)
SetGadgetState(28,#PB_Checkbox_Checked):SetGadgetState(29,#PB_Checkbox_Unchecked):SetGadgetState(30,#PB_Checkbox_Unchecked)
SetGadgetState(41,#PB_Checkbox_Checked):SetGadgetState(42,#PB_Checkbox_Unchecked)
EndProcedure
OpenWindow(1,0,0,1200,550,"Calcul Strings et Textes",#WS_OVERLAPPEDWINDOW | 1)
StickyWindow(1,1)
CanvasGadget(50,0,0,1000,500):HideGadget(50,1)
ListViewGadget(2,10,40,400,460)
TextGadget(3,20,10,130,20,"Choix polices")
ListViewGadget(4, 420,40,80,460)
For z = 6 To 70
AddGadgetItem(4,-1,Str(z))
Next
TextGadget(5,425,10,80,20,"Taille:")
VisuEmumFont()
SetGadgetText(2,"[TT] Tahoma");sélectionne
SendMessage_(GadgetID(2), #LB_SETTOPINDEX,GetGadgetState(2), 0);montre la sélection
SetGadgetText(4,"14");sélectionne
FrameGadget(6,510,40,180,460,"",#PB_Frame_Flat)
CheckBoxGadget(7,520,80,100,25,"Gras",#PB_CheckBox_Center)
CheckBoxGadget(8,520,160,100,25,"Italique",#PB_CheckBox_Center)
CheckBoxGadget(9,520,240,100,25,"Souligné",#PB_CheckBox_Center)
CheckBoxGadget(10,520,320,100,25,"Barré",#PB_CheckBox_Center)
CheckBoxGadget(11,520,400,150,25,"Haute qualité",#PB_CheckBox_Center)
TextGadget(12,530,10,130,20,"Style:")
FrameGadget(20,700,10,490,80,"Test police: taille 14")
TextGadget(21,710,35,470,50,"AZuytmwxc1230TRF45 ЯЍ ΩΣ WX")
testPolice("Tahoma",st1,st2,st3,st4,st5)
TextGadget(22,250,515,180,20,"Nb polices: "+ Str(CountGadgetItems(2)))
FrameGadget(23,700,110,490,130,"Paramètres")
CheckBoxGadget(24,760,135,150,25,"TextGadget")
SetGadgetState(24,#PB_Checkbox_Checked)
CheckBoxGadget(25,1000,135,150,25,"StringGadget")
TextGadget(26,740,175,250,20,"Nombre de lettres ou signes")
StringGadget(27,1000,172,130,25,"1",#PB_String_Numeric|#ES_CENTER)
SendMessage_(GadgetID(27),#EM_LIMITTEXT,3,0)
CheckBoxGadget(28,710,205,135,25,"Maj/minus")
SetGadgetState(28,#PB_Checkbox_Checked)
CheckBoxGadget(29,845,205,165,25,"Maj seulement")
CheckBoxGadget(30,1020,205,165,25,"Chiffre seulement")
FrameGadget(31,700,255,490,245,"Résultats (pixels)")
TextGadget(32,720,280,80,20,"Largeur:")
TextGadget(33,800,280,130,25,"",#PB_Text_Border|#PB_Text_Center)
SetGadgetColor(33,#PB_Gadget_BackColor,$90EE90)
TextGadget(34,960,280,80,20,"Hauteur:")
TextGadget(35,1050,280,130,25,"",#PB_Text_Border|#PB_Text_Center)
SetGadgetColor(35,#PB_Gadget_BackColor,$90EE90)
TextGadget(36,720,320,120,20,"Code Gadget")
TextGadget(37,720,345,460,25,"",#PB_Text_Border)
SetGadgetColor(37,#PB_Gadget_BackColor,$90EE90)
TextGadget(38,720,380,120,20,"Code Police")
EditorGadget(39,720,410,460,50)
SetGadgetColor(39,#PB_Gadget_BackColor,$90EE90)
SetGadgetFont(39,FontID5)
TextGadget(40,720,470,120,20,"Presse papier:")
CheckBoxGadget(41,850,470,120,25,"Gadget seul")
SetGadgetState(41,#PB_Checkbox_Checked)
CheckBoxGadget(42,990,470,160,25,"Gadget + police")
ButtonGadget(43,840,505,150,43,"Presse papier")
SetGadgetFont(43,FontID1)
ButtonGadget(44,990,505,100,43,"R A Z")
ButtonGadget(45,1090,505,100,43,"Stop")
If Left(GetGadgetText(2),3) = "[TT"
Ft$ = Mid(GetGadgetText(2),7,Len(GetGadgetText(2)));Si TT enlève le type
Else
Ft$ = GetGadgetText(2)
EndIf
tp =Val(GetGadgetText(4))
LH(Ft$,tp,st1,St2,st3,st4,st5)
For x = 2 To 45
If x <> 39 :SetGadgetFont(x,FontID1):EndIf
Next
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2;liste Police
If Left(GetGadgetText(2),3) = "[TT"
Ft$ = Mid(GetGadgetText(2),7,Len(GetGadgetText(2)));Si TT enlève le type
Else
Ft$ = GetGadgetText(2)
EndIf
testPolice(Ft$,st1,St2,st3,st4,st5)
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 4;liste taille
tp = Val(GetGadgetText(4))
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 7;gras
If GetGadgetState(7) = #PB_Checkbox_Checked
st1 = #PB_Font_Bold
Else
st1 = 0
EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
testPolice(Ft$,st1,St2,st3,st4,st5)
Case 8;Italique
If GetGadgetState(8) = #PB_Checkbox_Checked
st2 = #PB_Font_Italic
Else
st2 = 0
EndIf
testPolice(Ft$,st1,St2,st3,st4,st5)
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 9;Souligné
If GetGadgetState(9) = #PB_Checkbox_Checked
st3 = #PB_Font_Underline
Else
st3 = 0
EndIf
testPolice(Ft$,st1,St2,st3,st4,st5)
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 10;Barré
If GetGadgetState(10) = #PB_Checkbox_Checked
st4 = #PB_Font_StrikeOut
Else
st4 = 0
EndIf
testPolice(Ft$,st1,St2,st3,st4,st5)
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 11;Haute qualité
If GetGadgetState(11) = #PB_Checkbox_Checked
st5 = #PB_Font_HighQuality
Else
st5 = 0
EndIf
testPolice(Ft$,st1,St2,st3,st4,st5)
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 24;check textGad
SetGadgetState(24,#PB_Checkbox_Checked)
If GetGadgetState(24) = #PB_Checkbox_Checked:SetGadgetState(25,#PB_Checkbox_Unchecked):EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 25;check stringGad
SetGadgetState(25,#PB_Checkbox_Checked)
If GetGadgetState(25) = #PB_Checkbox_Checked:SetGadgetState(24,#PB_Checkbox_Unchecked):EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 27;string
Select EventType()
Case #PB_EventType_Change
LH(Ft$,tp,st1,St2,st3,st4,st5)
EndSelect
Case 28;check Maj/minus
SetGadgetState(28,#PB_Checkbox_Checked)
If GetGadgetState(28) = #PB_Checkbox_Checked
SetGadgetState(29,#PB_Checkbox_Unchecked)
SetGadgetState(30,#PB_Checkbox_Unchecked)
EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 29;check Maj/minus
SetGadgetState(29,#PB_Checkbox_Checked)
If GetGadgetState(29) = #PB_Checkbox_Checked
SetGadgetState(28,#PB_Checkbox_Unchecked)
SetGadgetState(30,#PB_Checkbox_Unchecked)
EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 30;check chiffre
SetGadgetState(30,#PB_Checkbox_Checked)
If GetGadgetState(30) = #PB_Checkbox_Checked
SetGadgetState(28,#PB_Checkbox_Unchecked)
SetGadgetState(29,#PB_Checkbox_Unchecked)
EndIf
LH(Ft$,tp,st1,St2,st3,st4,st5)
Case 41;check pp gad seul
SetGadgetState(41,#PB_Checkbox_Checked)
If GetGadgetState(41) = #PB_Checkbox_Checked:SetGadgetState(42,#PB_Checkbox_Unchecked):EndIf
Case 42;check pp gad + police
SetGadgetState(42,#PB_Checkbox_Checked)
If GetGadgetState(42) = #PB_Checkbox_Checked:SetGadgetState(41,#PB_Checkbox_Unchecked):EndIf
Case 43;PP
ClearClipboard()
If GetGadgetState(41) = #PB_Checkbox_Checked:pp$ = GetGadgetText(37):EndIf
If GetGadgetState(42) = #PB_Checkbox_Checked: pp$ = GetGadgetText(37)+ Chr (13) + Chr (10) + GetGadgetText(39):EndIf
SetClipboardText(pp$)
Case 44;raz
raz()
st1= 0:st2 = 0:st3= 0:st4 = 0:st5 = 0
If Left(GetGadgetText(2),3) = "[TT"
Ft$ = Mid(GetGadgetText(2),7,Len(GetGadgetText(2)));Si TT enlève le type
Else
Ft$ = GetGadgetText(2)
EndIf
tp =Val(GetGadgetText(4))
LH(Ft$,tp,st1,St2,st3,st4,st5)
testPolice(Ft$,st1,St2,st3,st4,st5)
Case 45;bt stop
CloseWindow(1)
End
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
End