voici la nouvelle version de mon visualiseur de code Unicode.
Maintenant un clique dans la liste et vous avez le code décimal et hexa.
Pour cliquer dans la liste ,il faut que recherche par numéro soit coché.
Code : Tout sélectionner
; Code-Unicode By MLD le 19/09/2016 modifier le 27/10/2017
;PB 5.60. Compilation unicode
;**** constantes ****
#Ma_fen = 0:#txt_1 = 1:#string_1 = 2:#string_2 = 3:#string_3 = 4:#bt_p = 5:#bt_m = 6
#CheckBox_num = 7:#CheckBox_car = 8:#Bt_copie = 9:#Bt_Raz = 10:#Bt_stop = 11:#Etic_1 = 12:#Etic_2 = 13:#Etic_3 = 14:#Etic_4 = 15
#CheckBox_th_1 = 16:#CheckBox_th_2 = 17: #CheckBox_th_3 = 18:#CheckBox_th_4 = 19:#CheckBox_th_5 = 20:#CheckBox_th_6 = 21:#CheckBox_th_7 = 22
#CheckBox_th_8 = 23:#CheckBox_th_9 = 24:#CheckBox_th_10 = 25:#CheckBox_th_11 = 26:#CheckBox_th_12 = 27:#CheckBox_th_13 = 28:#CheckBox_th_14 = 29
#CheckBox_th_15 = 30:#CheckBox_th_16 = 31:#CheckBox_th_17 = 32:#CheckBox_th_18 = 33:#CheckBox_th_19 = 34
#traitvert = 35:#listfont = 36:#conteneur = 37:#listcaract = 38:#imgtxt =39
Declare afcarac(nc)
Global FontID1 = LoadFont(50,"Tahoma",12,#PB_Font_Bold)
Global FontID2 = LoadFont(51,"Tahoma",36,#PB_Font_HighQuality)
Global FontID3 = LoadFont(52,"Tahoma",12,#PB_Font_HighQuality)
Global FontID4 = LoadFont(53,"Tahoma",11,#PB_Font_HighQuality)
Global FontID5 = LoadFont(54,"Tahoma",24,#PB_Font_HighQuality)
Global A$ = "NUL;SOH;STX;ETX;EOT;ENQ;ACK;BEL;BS;HT;LF;VT;FF;CR;SO;SI;DLE;DC1;DC2;DC3;DC4;NAK;SYN;ETB;CAN;EM;SUB;ESC;FS;GS;RS;US;SP;"
Global min,max
Macro Selects(num)
If num = 1 Or num = 3
SetGadgetColor(2,#PB_Gadget_BackColor,$FFFFFF)
SetGadgetColor(3,#PB_Gadget_BackColor,$2FFFAD)
SetGadgetColor(4,#PB_Gadget_BackColor,$2FFFAD)
DisableGadget(2,1):DisableGadget(3,0):DisableGadget(4,0)
DisableGadget(5,0):DisableGadget(6,0)
For d = 16 To 34
DisableGadget(d,0)
Next
If num = 3
SetGadgetText(2,"NUL")
SetGadgetText(3,"0")
SetGadgetText(4,"00")
EndIf
Else
SetGadgetColor(2,#PB_Gadget_BackColor,$2FFFAD)
SetGadgetColor(3,#PB_Gadget_BackColor,$FFFFFF)
SetGadgetColor(4,#PB_Gadget_BackColor,$FFFFFF)
For x = 2 To 4
SetGadgetText(x,"")
Next
DisableGadget(2,0):DisableGadget(3,1):DisableGadget(4,1)
DisableGadget(5,1):DisableGadget(6,1)
For d = 16 To 34
DisableGadget(d,1)
Next
EndIf
EndMacro
Procedure GestionCaret(Gadget) ; Gestion du caret dans stringGadget
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
y = Debut_Position
Texte.s = GetGadgetText(Gadget)
x =Len(Texte)
Texte2.s = Left(Texte,y ) + Right(Texte,x-y)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, x, x)
EndProcedure
Procedure convert(n)
If n = 1
SetGadgetText(4,Hex(Val(GetGadgetText(3))))
EndIf
If n = 2
SetGadgetText(3,Str(Val("$" + GetGadgetText(4))))
EndIf
If GetGadgetState(7) = 1
afcarac(Val(GetGadgetText(3)))
EndIf
EndProcedure
Procedure afcarac(nc)
If nc < 33
car$ = StringField(A$,nc+1,";")
Else
car$ = Chr(nc)
EndIf
If nc = 127:car$ = "DEL":EndIf
If nc = 160:car$ = "NBSP":EndIf
SetGadgetText(2,car$)
EndProcedure
Procedure carnum(car$)
If Len(car$) >1
SetGadgetText(2,UCase(car$))
GestionCaret(2)
car$ = GetGadgetText(2)
For c = 1 To 32
If car$ = StringField(A$,c+1,";")
num = c
Break
EndIf
Next
If car$ = "DEL" :num = 127:EndIf
If car$ = "NBSP" :num = 160:EndIf
SetGadgetText(3,Str(num))
convert(1)
Else
SetGadgetText(3,Str(Asc(GetGadgetText(2))))
convert(1)
EndIf
EndProcedure
Procedure afflist(*valeur)
ClearGadgetItems(38)
For Z = min To max
CreateImage(39,40,40,32,$D7C2C2)
StartDrawing(ImageOutput(39))
DrawingFont(FontID5)
largtxt = TextWidth(Chr(Z));largeur txt
hauttxt = TextHeight(Chr(Z));hauteur txt
DrawText((40-largtxt)/2,(40-hauttxt)/2, Chr(Z),$FF0000,$D7C2C2)
StopDrawing()
AddGadgetItem(38,-1,Str(Z),ImageID(39))
FreeImage(39)
Next
SendMessage_(GadgetID(38),#WM_SETREDRAW,1,0) ; on redessine la liste
EndProcedure
Procedure gestion_check(numcarac);************
Static D2
For ck = 16 To 34
SetGadgetState(ck,#PB_Checkbox_Unchecked)
Next
Select numcarac
Case 0 To 591;Latin
numchek = 16:min = 0:max = 591:D=1
Case 7680 To 7935 ;Latin étendu
numchek = 17:min = 7680:max = 7935:D=2
Case 1024 To 1327 ;Cyrillique
numchek = 18:min = 1024:max = 1327:D=3
Case 880 To 1023 ;Grecque
numchek = 19:min = 880:max = 1023:D=4
Case 1424 To 1535 ;Hebreu
numchek = 20:min = 1424:max = 1535:D=5
Case 1536 To 1791 ;Arabe
numchek = 21:min = 1536:max = 1791:D=6
Case 8448 To 8587 ;Symboles de lettre
numchek = 22:min = 8448:max = 8587:D=7
Case 8352 To 8399 ;Symboles courants
numchek = 23:min = 8352:max = 8399:D=8
Case 9728 To 10175 ;Symboles divers
numchek = 24:min = 9728:max = 10175:D=9
Case 9472 To 9599 ;Box drawing
numchek = 25:min = 9472:max = 9599:D=10
Case 9632 To 9727 ;Figures géométriques
numchek = 26:min = 9632:max = 9727:D=11
Case 9312 To 9471 ;(Alphanum)
numchek = 27 :min = 9312:max = 9471:D=12
Case 8592 To 8703 ;Flèches
numchek = 28:min = 8592:max = 8703:D=13
Case 10496 To 10623 ;Supplément flèches
numchek = 29:min = 10496:max = 10623:D=14
Case 10176 To 10223 ;Symboles math A
numchek = 30:min = 10176:max = 10223:D=15
Case 10624 To 10751 ;Symboles math B
numchek = 31:min = 10624:max = 10751:D=16
Case 8704 To 8956 ;Opérateur math A
numchek = 32:min = 8704:max = 8956 :D=17
Case 10752 To 11007 ;Opérateur math B
numchek = 33:min = 10752:max = 11007:D=18
Default
numchek = 34:min = Val(GetGadgetText(3)):max = min +300 :D= Random(100,19)
EndSelect
If D <> D2;pour ne pas déssiné la liste a chaque fois
CreateThread(@afflist(),1)
D2 = D
EndIf
If numcarac <> -1
SetGadgetState(numchek,#PB_Checkbox_Checked)
SetGadgetText(3,Str(numcarac))
convert(1)
EndIf
EndProcedure
OpenWindow(#Ma_fen,600,200,1050,580,"Code Unicode",#PB_Window_BorderLess | #PB_Window_Invisible | #PB_Window_ScreenCentered)
SetClassLongPtr_(WindowID(#Ma_fen),#GCL_STYLE,$00020000)
HideWindow(#Ma_fen,0)
StickyWindow(#Ma_fen,1)
; gadgets
N$ = " CODE UNICODE"
For x = 1 To Len(N$)
L$ = L$ + Mid(N$,x,1) + Chr(10)
Next
TextGadget(1,0,0,30,580,L$,#PB_Text_Center)
SetGadgetColor(1,#PB_Gadget_BackColor,$45DDB0)
SetGadgetFont(1,FontID1)
StringGadget(2,50,50,140,65,"NUL",#ES_CENTER)
SendMessage_(GadgetID(2),#EM_LIMITTEXT,4, 0)
SetGadgetFont(2,FontID2)
StringGadget(3,50,180,120,25,"0",#ES_CENTER|#PB_String_Numeric)
SetGadgetFont(3,FontID1)
StringGadget(4,50,280,120,25,"00",#ES_CENTER|#PB_String_UpperCase)
SetGadgetFont(4,FontID1)
ButtonGadget(5,210,190,40,40,"+")
SetGadgetFont(5,FontID1)
ButtonGadget(6,210,248,40,40,"-")
SetGadgetFont(6,FontID1)
CheckBoxGadget(7,50,360,200,25,"Recherche par numéro")
CheckBoxGadget(8,50,420,200,25,"Recherche par caractère")
ButtonGadget(9,792,540,80, 30,"Copie")
ButtonGadget(10,871,540,60, 30,"Raz")
ButtonGadget(11,930,540,80, 30,"Stop")
TextGadget(12,50,20,140,25,"Caractère",#PB_Text_Center)
SetGadgetColor(12,#PB_Gadget_FrontColor,$FF0000)
TextGadget(13,50,150,120,25,"Code décimal",#PB_Text_Center)
TextGadget(14,50,250,140,25,"Code héxadécimal",#PB_Text_Center)
TextGadget(15,280,20,190,25,"Recherche par thème",#PB_Text_Center)
SetGadgetColor(15,#PB_Gadget_FrontColor,$FF0000)
For b = 7 To 15
SetGadgetFont(b,FontID3)
Next
CheckBoxGadget(16,295,50,220,20,"Latin standard")
CheckBoxGadget(17,295,75,220,20,"Latin étendu")
CheckBoxGadget(18,295,100,220,20,"Cyrillique")
CheckBoxGadget(19,295,125,220,20,"Grecque")
CheckBoxGadget(20,295,150,220,20,"Hébreu")
CheckBoxGadget(21,295,175,220,20,"Arabe")
CheckBoxGadget(22,295,200,220,20,"Symboles de lettres")
CheckBoxGadget(23,295,225,220,20,"Symboles courants")
CheckBoxGadget(24,295,250,220,20,"Symboles divers")
CheckBoxGadget(25,295,275,220,20,"Box drawing")
CheckBoxGadget(26,295,300,220,20,"Figures géométriques")
CheckBoxGadget(27,295,325,220,20,"(Alphanumérique)")
CheckBoxGadget(28,295,350,220,20,"Flèches")
CheckBoxGadget(29,295,375,220,20,"Supplément flèches")
CheckBoxGadget(30,295,400,220,20,"Symboles mathématiques A")
CheckBoxGadget(31,295,425,220,20,"Symboles mathématiques B")
CheckBoxGadget(32,295,450,220,20,"Opérateurs mathématiques A")
CheckBoxGadget(33,295,475,220,20,"Opérateurs mathématiques B")
CheckBoxGadget(34,295,500,220,20,"Autres")
For b = 16 To 34
SetGadgetFont(b,FontID4)
Next
TextGadget(35,270,90,1,390,"");trait vert
SetGadgetColor(35,#PB_Gadget_BackColor,$FF00FF)
ContainerGadget(37,530,30,500,490,#PB_Container_Double)
ListIconGadget(38,0,0,500,490, "Column 1", 100)
SendMessage_(GadgetID(38),#WM_SETREDRAW,0,0) ; le gadget n'est pas redessiné après un changement
SetGadgetColor(38,#PB_Gadget_BackColor,$D7C2C2)
SetGadgetAttribute(38,#PB_ListIcon_DisplayMode, #PB_ListIcon_LargeIcon)
CloseGadgetList()
; Taches préparatoires
SetGadgetState(7,#PB_Checkbox_Checked)
Selects(1)
gestion_check(Val(GetGadgetText(3)))
; Boucle générale
Repeat
Event = WaitWindowEvent()
If Event = #WM_LBUTTONDOWN
SendMessage_(WindowID(#Ma_fen), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2 ;string caractere
Select EventType()
Case #PB_EventType_Change
carnum(GetGadgetText(2))
gestion_check(Val(GetGadgetText(3)))
EndSelect
Case 3 ;string décimale
Select EventType()
Case #PB_EventType_Change
gestion_check(Val(GetGadgetText(3)))
GestionCaret(3)
EndSelect
Case 4 ;string hexa
Select EventType()
Case #PB_EventType_Change
convert(2)
gestion_check(Val(GetGadgetText(3)))
GestionCaret(4)
EndSelect
Case 5 ;bt + **************************
If Val(GetGadgetText(3))< 119199;pour nr pas avoir de dépassement
p = Val(GetGadgetText(3))+1
SetGadgetText(3,Str(P))
gestion_check(Val(GetGadgetText(3)))
EndIf
Case 6 ;bt -
If Val(GetGadgetText(3)) > 0
M = Val(GetGadgetText(3)) -1
SetGadgetText(3,Str(M))
gestion_check(Val(GetGadgetText(3)))
EndIf
Case 7 ;checKbox num
SetGadgetState(7,#PB_Checkbox_Checked)
SetGadgetState(8,#PB_Checkbox_Unchecked)
Selects(1)
Case 8 ;checKbox car
SetGadgetState(8,#PB_Checkbox_Checked)
SetGadgetState(7,#PB_Checkbox_Unchecked)
For z = 3 To 4
SetGadgetText(z,"")
Next
Selects(2)
SetActiveGadget(2)
Case 16 ;checKbox latin
gestion_check(0)
Case 17 ;checKbox latin étendu
gestion_check(7680)
Case 18 ;checKbox cyrillique
gestion_check(1024)
Case 19 ;checKbox Grecque
gestion_check(880)
Case 20 ;checKbox Hebreu
gestion_check(1424)
Case 21 ;checKbox Arabe
gestion_check(1536)
Case 22 ;checKbox Symboles de lettre
gestion_check(8448)
Case 23 ;checKbox Symboles courant
gestion_check(8352)
Case 24 ;checKbox Symboles divers
gestion_check(9728)
Case 25 ;checKbox Box drawing
gestion_check(9472)
Case 26 ;checKbox Figures géométriques
gestion_check(9632)
Case 27 ;checKbox (Alphanum)
gestion_check(9312)
Case 28 ;checKbox Flèches
gestion_check(8592)
Case 29 ;checKbox Supplément flèches
gestion_check(10496)
Case 30 ;Symboles math A
gestion_check(10176)
Case 31 ;Symboles math B
gestion_check(10624)
Case 32 ;Opérateurs math A
gestion_check(8704)
Case 33 ;Opérateurs math B
gestion_check(10752)
Case 34 ;autres
gestion_check(-1)
Case 38;liste
Select EventType()
Case #PB_EventType_LeftClick
If GetGadgetState(7) = 1;seulement par les numéros
SetGadgetText(3,GetGadgetItemText(38, GetGadgetState(38) ,0))
convert(1)
EndIf
EndSelect
Case 9 ;bt copie
ClearClipboard()
If GetGadgetState(7)= 1
SetClipboardText(GetGadgetText(2))
Else
SetClipboardText(GetGadgetText(4))
EndIf
Case 10 ;bt_raz
SetGadgetState(7,#PB_Checkbox_Checked)
SetGadgetState(8,#PB_Checkbox_Unchecked)
gestion_check(0)
Selects(3)
Case 11 ;bt_stop
CloseWindow(0)
Break
EndSelect
EndIf
ForEver
End