Suite aux remarques positives de certains, voici la version de cet outil.
Il comporte maintenant une recherche rapide par thème. J'ai choisis les thème de manière forcément arbitraire. Si cela ne convient pas
a certains, comme je donne le code, ils éffecturont les modifications qu'il souhaitent.
Zorro! Tu peu inclure dans ton logiciel
Fonctionnement:
1° Recherche par numéro
Tapez un chiffre dédimal ou héxadécimal dans la case appropriée et le cractère s'affiche. Un appuis sur copié met le caractère
dans presse papier
2° Recherche par caractère.
Tapez, ou importez par le presse papier un caractère dans la case appropriée, le code décimal et hexadécimale s'affichent.
Un appuis sur copié met le code héxadécimale dans le presse papier.
3° Recherche par thème. (Ne fonctionne que si la case recherche par numéro est coché.)
Cochez la case du thème souhaité. Le premier caracactère du thème s'affiche. déplacez vous avec les boutons + -
Un appuis sur copié met le caractère dans presse papier
Code : Tout sélectionner
; Code-Unicode By MLD le 19/09/2016
;PB 5.43LTS. Compilation unicode
Enumeration
#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
EndEnumeration
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 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;"
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 gestion_check(numcarac)
For ck = 16 To 34
SetGadgetState(ck,#PB_Checkbox_Unchecked)
Next
Select numcarac
Case 0 To 591;Latin
numchek = 16
Case 7680 To 7935 ;Latin étendu
numchek = 17
Case 1024 To 1327 ;Cyrillique
numchek = 18
Case 880 To 1023 ;Grecque
numchek = 19
Case 1424 To 1535 ;Hebreu
numchek = 20
Case 1536 To 1791 ;Arabe
numchek = 21
Case 8448 To 8587 ;Symboles de lettre
numchek = 22
Case 8352 To 8399 ;Symboles courants
numchek = 23
Case 9728 To 10175 ;Symboles divers
numchek = 24
Case 9472 To 9599 ;Box drawing
numchek = 25
Case 9632 To 9727 ;Figures géométriques
numchek = 26
Case 9312 To 9471 ;(Alphanum)
numchek = 27
Case 8592 To 8703 ;Flèches
numchek = 28
Case 10496 To 10623 ;Supplément flèches
numchek = 29
Case 10176 To 10223 ;Symboles math A
numchek = 30
Case 10624 To 10751 ;Symboles math B
numchek = 31
Case 8704 To 8956 ;Opérateur math A
numchek = 32
Case 10752 To 11007 ;Opérateur math B
numchek = 33
Default
numchek = 34
EndSelect
If numcarac <> -1
SetGadgetState(numchek,#PB_Checkbox_Checked)
SetGadgetText(3,Str(numcarac))
convert(1)
EndIf
EndProcedure
OpenWindow(#Ma_fen,600,200,515,580,"Code Unicode",#PB_Window_BorderLess | #PB_Window_Invisible)
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,282,540,80, 30,"Copie")
ButtonGadget(10,361,540,60, 30,"Raz")
ButtonGadget(11,420,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)
; 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 +
p = Val(GetGadgetText(3))+1
SetGadgetText(3,Str(P))
gestion_check(Val(GetGadgetText(3)))
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 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