PureBasic

Forums PureBasic
Nous sommes le Ven 25/Mai/2018 21:44

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Pour les amateurs d'unicode
MessagePosté: Ven 27/Oct/2017 14:15 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 815
Bonjours a tous
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:
; 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


Zorro comme la dernière fois Tu as l'autorisation de l'inclure dans ton RAD (Pas le bistro) :mrgreen: :D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pour les amateurs d'unicode
MessagePosté: Ven 27/Oct/2017 14:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 1901
Localisation: 50200 Coutances
Très bon, j'adore, merci pour le partage.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.45 LTS, 5.62
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pour les amateurs d'unicode
MessagePosté: Ven 27/Oct/2017 18:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6449
Localisation: Isere
Cool merci pour le partage 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pour les amateurs d'unicode
MessagePosté: Dim 29/Oct/2017 11:10 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 815
@ Micoute et KCC
Merci.
J'ai omis de dire que la copie c'est dans le presse papier.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye