Accueil > > > COLORISATION SYNTAXIQUE
COLORISATION SYNTAXIQUE
Information sur la source
Description
Voici le problème de la colorisation syntaxique expliqué partiellement. Cette source est hyper commenté et destinée aux plus débutants qui y apprendront de nombreuses choses. La routine reste à être amélioré pour être utilisée serieusement mais les bases sont là. Cependant, l'ayant fait sur un 2 Ghz, je me demande comment il tourne sur un plus petit (style 300 Mhz). Si vous êtes dans ce cas, tenez-moi informé des performances. Tout est dans le ZIP.
Source
- 'Cette variable sert à ne pas réappeler
- ' une procédure en cours...
- Private AntiRecursif As Boolean
-
- Private CoulRouge As Byte
- Private CoulVerte As Byte
- Private CoulBleue As Byte
- Private Couleur As Long
-
- Private CoulRougeElement As Byte
- Private CoulVerteElement As Byte
- Private CoulBleueElement As Byte
- Private CouleurElement As Long
-
- Private varItem As Long
-
-
-
- '================================================================
- ' INITIALISATION DU PROGRAMME
- '================================================================
- Private Sub Form_Load()
- varItem = 0
- End Sub
- '================================================================
- '================================================================
- '================================================================
-
-
-
- '================================================================
- ' GESTION DES COULEURS
- '================================================================
- Private Sub HScrollRouge_Change(): Call HScrollRouge_Scroll: End Sub
- Private Sub HScrollRouge_Scroll()
- CoulRouge = HScrollRouge.Value
- 'Note: Cstr permet de convertir un nombre
- ' en texte sans ajouter d'espace avant
- ' comme le fait Str().
- ztxRouge.Text = CStr(CoulRouge)
- Call CouleurChanged
- End Sub
- Private Sub HScrollVerte_Change(): Call HScrollVerte_Scroll: End Sub
- Private Sub HScrollVerte_Scroll()
- CoulVerte = HScrollVerte.Value
- ztxVerte.Text = CStr(CoulVerte)
- Call CouleurChanged
- End Sub
- Private Sub HScrollBleue_Change(): Call HScrollBleue_Scroll: End Sub
- Private Sub HScrollBleue_Scroll()
- CoulBleue = HScrollBleue.Value
- ztxBleue.Text = CStr(CoulBleue)
- Call CouleurChanged
- End Sub
- Private Sub CouleurChanged()
- 'Notes :
- 'La fonction RGB permet d'obtenir le numéro d'une couleur
- ' en fonction des 3 composantes rouge, vert et bleu.
- ' Ce nombre est compris (lorsqu'on travail en 24 bits comme
- ' dans la pluspart des cas) entre 0 et 16'777'215.
- ' 24 bits = 2 puissance 24 = 16'777'216 couleurs possibles
- ' La variable devra donc être de type Long et non de de type
- ' Integer. Par contre, les sub-pixels, eux, varient de 0 à 255
- ' (soit 256 nuances) et sont donc de type Byte.
- 'La fonction CByte convertie un texte en nombre de type Byte justement.
- Couleur = RGB(CByte(ztxRouge.Text), CByte(ztxVerte.Text), CByte(ztxBleue.Text))
- ShapeCouleur.BackColor = Couleur
- End Sub
- '================================================================
- '================================================================
- '================================================================
-
-
-
- '================================================================
- ' GESTION DE LA LISTE
- '================================================================
- Private Sub ztxElement_KeyUp(KeyCode As Integer, Shift As Integer)
- 'Static veut dire que la variable sera conservée
- ' après chaque appel de cette procédure.
- 'Autrement dit, elle ne sera pas détruite à la fin.
- 'On utilise cette technique parce que cette procédure
- ' est appelée souvent.
- Static t As Integer 'Variable temporaire
- Static varModifier As Boolean 'Variable de détection
-
- If AntiRecursif = True Then Exit Sub
- AntiRecursif = True
-
- 'Dès qu'on appuye sur une touche,
- If ztxElement.Text = "" Then
- 'Désactive le bouton Ajouter et Modifier s'il n'y a pas de texte
- btnAjouter.Enabled = False
- btnModifier.Enabled = False
- Else
- 'S'il y a du texte :
- 'Il faut parcourir la liste pour savoir
- ' si ce texte existe déjà ou non.
- 'S'il existe déjà, on active le bouton Modifier
- ' et on désactive le bouton Ajouter.
- 'Dans le cas contraire, on fait l'inverse.
- varModifier = False
- If ListeDesMots.ListCount > 0 Then
- 'Ne teste ça que si il y au moins un mot dans la liste
- For t = 0 To (ListeDesMots.ListCount - 1)
- If ListeDesMots.List(t) = ztxElement.Text Then varModifier = True: Exit For
- Next t
- End If
- If varModifier = True Then
- btnModifier.Enabled = True
- btnAjouter.Enabled = False
- Else
- btnModifier.Enabled = False
- btnAjouter.Enabled = True
- End If
- End If
-
- AntiRecursif = False
- End Sub
-
- Private Sub btnAjouter_Click()
- 'Test de sécurité...
- If ztxElement.Text = "" Then Exit Sub
-
- varItem = varItem + 1
- ListeDesMots.AddItem ztxElement.Text
- ListeDesCouleurs.AddItem CStr(CouleurElement)
- ListeDesMots.ItemData(ListeDesMots.NewIndex) = varItem
- ListeDesCouleurs.ItemData(ListeDesCouleurs.NewIndex) = varItem
- ListeDesMots.ListIndex = ListeDesMots.NewIndex
-
- btnModifier.Enabled = True
- btnAjouter.Enabled = False
- btnSupprimer.Enabled = True
- End Sub
-
- Private Sub btnSupprimer_Click()
- Static t As Long
-
- If ListeDesMots.ListIndex < 0 Then btnSupprimer.Enabled = False: Exit Sub
-
- For t = 0 To (ListeDesCouleurs.ListCount - 1)
- If ListeDesMots.ItemData(ListeDesMots.ListIndex) = ListeDesCouleurs.ItemData(t) Then
- ListeDesCouleurs.RemoveItem t
- Exit For
- End If
- Next t
-
- t = ListeDesMots.ListIndex
- ListeDesMots.RemoveItem ListeDesMots.ListIndex
- If ListeDesMots.ListCount < 1 Then
- ztxElement.Text = ""
- CouleurElement = 0
- ShapeCouleurElement.BackColor = 0
- btnModifier.Enabled = False
- btnAjouter.Enabled = False
- btnSupprimer.Enabled = False
- Else
- If t > (ListeDesMots.ListCount - 1) Then t = (ListeDesMots.ListCount - 1)
- ListeDesMots.ListIndex = t
- btnModifier.Enabled = True
- btnAjouter.Enabled = False
- btnSupprimer.Enabled = True
- End If
-
- End Sub
-
- Private Sub btnModifier_Click()
- Static t As Long
-
- If ztxElement = "" Then btnModifier.Enabled = False: Exit Sub
-
- For t = 0 To (ListeDesCouleurs.ListCount - 1)
- If ListeDesCouleurs.ItemData(t) = ListeDesMots.ItemData(ListeDesMots.ListIndex) Then
- ListeDesCouleurs.ItemData(t) = CouleurElement
- End If
- Next t
- End Sub
-
- Private Sub btnChangerCouleur_Click()
- ShapeCouleurElement.BackColor = Couleur
- CouleurElement = Couleur
- End Sub
-
- Private Sub ListeDesMots_Click()
- Static BackCouleur As Long
- Static t As Long
-
- If ListeDesMots.ListIndex < 0 Then
- ztxElement.Text = ""
- CouleurElement = 0
- ShapeCouleurElement.BackColor = 0
- btnModifier.Enabled = False
- btnAjouter.Enabled = False
- btnSupprimer.Enabled = False
- Else
- ztxElement.Text = ListeDesMots.List(ListeDesMots.ListIndex)
- For t = 0 To (ListeDesCouleurs.ListCount - 1)
- If ListeDesCouleurs.ItemData(t) = _
- ListeDesMots.ItemData(ListeDesMots.ListIndex) Then _
- CouleurElement = CLng(ListeDesCouleurs.List(t))
- Next t
- ShapeCouleurElement.BackColor = CouleurElement
- btnModifier.Enabled = True
- btnAjouter.Enabled = False
- btnSupprimer.Enabled = True
- End If
- End Sub
-
-
-
- '================================================================
- ' COLORATION SYNTAXIQUE
- '================================================================
- 'Note: Cette méthode pourait aussi, pour rendre l'utilisation
- ' moins lourde, se lancer toutes les x millisecondes via
- ' un timer. Pour cela, il faudrait placer tout ce code
- ' dans la procédure d'événement du timer...
-
- Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
- 'Méthode par recherche :
- '(méthode lente mais c'est pour l'exemple)
- Static t As Single
- Static tt As Single
- Static TextRechercher As String
- Static Position As Single
- Static varDebut As Single
- Static Coul As Long
- Static RechercheTerminer As Boolean
-
- 'La méthode consiste à recherche tous les mots de la liste
- ' et à reconsituer les balises RTF.
- 'Note : plus il y a de mots, plus le programme sera lent!
-
- 'Tout d'abord, on récupère la position actuelle du curseur.
- Position = RichTextBox1.SelStart
-
- 'Efface toutes les couleurs du texte
- ' Note: une méthode plus fine pourrait être trouvée...
- RichTextBox1.SelStart = 1
- RichTextBox1.SelLength = Len(RichTextBox1.Text)
- RichTextBox1.SelColor = 0 'Encre Noir par défaut...
- 'Un autre moyen :
- 'RichTextBox1.TextRTF = RichTextBox1.Text
-
- 'S'il n'y a aucun mot, on sort.
- If ListeDesMots.ListCount < 1 Then
- RichTextBox1.SelStart = Position
- Exit Sub
- End If
-
- For t = 0 To (ListeDesMots.ListCount - 1)
- RechercheTerminer = False
- TextRechercher = ListeDesMots.List(t)
- For tt = 0 To (ListeDesCouleurs.ListCount - 1)
- If ListeDesCouleurs.ItemData(tt) = ListeDesMots.ItemData(t) Then _
- Coul = ListeDesCouleurs.List(tt): Exit For
- Next tt
- varDebut = 1
- RichTextBox1.SelStart = varDebut
- Do
- 'rtfMatchCase = Respecter la casse
- ' (c.a.d. les majuscules et les minuscules)
- ' Puisque la "Fin" est omise, toutes les recherches
- ' s'effecturons jusqu'a la fin texte.
- 'rtfWholeWord = Rechercher par mot.
- tt = RichTextBox1.Find(TextRechercher, varDebut, , rtfWholeWord + rtfMatchCase)
- If tt = -1 Then
- 'Il n'y a plus d'occurrence
- RechercheTerminer = True
- Else
- 'La recherche à aboutie. Il faut remplacer le mot
- ' par le mot + les balises RTF de couleur.
- 'Il faut ensuite placer le curseur à la fin du
- ' mot pour poursuivre la recherche.
- RichTextBox1.SelColor = Coul
- varDebut = varDebut + RichTextBox1.SelLength
- End If
- Loop While RechercheTerminer <> True
- Next t
-
- RichTextBox1.SelStart = Position
- End Sub
- '================================================================
- '================================================================
- '================================================================
-
-
-
- '================================================================
- ' NOTES DE FIN
- '================================================================
- ' La routine de recherche n'est pas très fine (surtout s'agissant
- ' de la gestion des espaces et des cas particuliers) mais c'est
- ' à vous d'en faire ce que vous voudrez.
- ' Il ne reste plus qu'a rajouter la gestion de l'enregistrement
- ' des fichiers (RTF ou TXT).
- ' Notez que ma gestion des couleurs n'est pas très performante.
- ' Il vaudrait mieux utiliser des PictureBox et utiliser le
- ' contrôle ActiveX "Microsoft CommonDialog"...
- ' Je n'ai pas non plus filtré les entrées texte (p.ex. enlever
- ' les espaces de début et de fin des expressions).
- '
- ' A VOUS DE JOUER !
- '================================================================
- '================================================================
- '================================================================
'Cette variable sert à ne pas réappeler
' une procédure en cours...
Private AntiRecursif As Boolean
Private CoulRouge As Byte
Private CoulVerte As Byte
Private CoulBleue As Byte
Private Couleur As Long
Private CoulRougeElement As Byte
Private CoulVerteElement As Byte
Private CoulBleueElement As Byte
Private CouleurElement As Long
Private varItem As Long
'================================================================
' INITIALISATION DU PROGRAMME
'================================================================
Private Sub Form_Load()
varItem = 0
End Sub
'================================================================
'================================================================
'================================================================
'================================================================
' GESTION DES COULEURS
'================================================================
Private Sub HScrollRouge_Change(): Call HScrollRouge_Scroll: End Sub
Private Sub HScrollRouge_Scroll()
CoulRouge = HScrollRouge.Value
'Note: Cstr permet de convertir un nombre
' en texte sans ajouter d'espace avant
' comme le fait Str().
ztxRouge.Text = CStr(CoulRouge)
Call CouleurChanged
End Sub
Private Sub HScrollVerte_Change(): Call HScrollVerte_Scroll: End Sub
Private Sub HScrollVerte_Scroll()
CoulVerte = HScrollVerte.Value
ztxVerte.Text = CStr(CoulVerte)
Call CouleurChanged
End Sub
Private Sub HScrollBleue_Change(): Call HScrollBleue_Scroll: End Sub
Private Sub HScrollBleue_Scroll()
CoulBleue = HScrollBleue.Value
ztxBleue.Text = CStr(CoulBleue)
Call CouleurChanged
End Sub
Private Sub CouleurChanged()
'Notes :
'La fonction RGB permet d'obtenir le numéro d'une couleur
' en fonction des 3 composantes rouge, vert et bleu.
' Ce nombre est compris (lorsqu'on travail en 24 bits comme
' dans la pluspart des cas) entre 0 et 16'777'215.
' 24 bits = 2 puissance 24 = 16'777'216 couleurs possibles
' La variable devra donc être de type Long et non de de type
' Integer. Par contre, les sub-pixels, eux, varient de 0 à 255
' (soit 256 nuances) et sont donc de type Byte.
'La fonction CByte convertie un texte en nombre de type Byte justement.
Couleur = RGB(CByte(ztxRouge.Text), CByte(ztxVerte.Text), CByte(ztxBleue.Text))
ShapeCouleur.BackColor = Couleur
End Sub
'================================================================
'================================================================
'================================================================
'================================================================
' GESTION DE LA LISTE
'================================================================
Private Sub ztxElement_KeyUp(KeyCode As Integer, Shift As Integer)
'Static veut dire que la variable sera conservée
' après chaque appel de cette procédure.
'Autrement dit, elle ne sera pas détruite à la fin.
'On utilise cette technique parce que cette procédure
' est appelée souvent.
Static t As Integer 'Variable temporaire
Static varModifier As Boolean 'Variable de détection
If AntiRecursif = True Then Exit Sub
AntiRecursif = True
'Dès qu'on appuye sur une touche,
If ztxElement.Text = "" Then
'Désactive le bouton Ajouter et Modifier s'il n'y a pas de texte
btnAjouter.Enabled = False
btnModifier.Enabled = False
Else
'S'il y a du texte :
'Il faut parcourir la liste pour savoir
' si ce texte existe déjà ou non.
'S'il existe déjà, on active le bouton Modifier
' et on désactive le bouton Ajouter.
'Dans le cas contraire, on fait l'inverse.
varModifier = False
If ListeDesMots.ListCount > 0 Then
'Ne teste ça que si il y au moins un mot dans la liste
For t = 0 To (ListeDesMots.ListCount - 1)
If ListeDesMots.List(t) = ztxElement.Text Then varModifier = True: Exit For
Next t
End If
If varModifier = True Then
btnModifier.Enabled = True
btnAjouter.Enabled = False
Else
btnModifier.Enabled = False
btnAjouter.Enabled = True
End If
End If
AntiRecursif = False
End Sub
Private Sub btnAjouter_Click()
'Test de sécurité...
If ztxElement.Text = "" Then Exit Sub
varItem = varItem + 1
ListeDesMots.AddItem ztxElement.Text
ListeDesCouleurs.AddItem CStr(CouleurElement)
ListeDesMots.ItemData(ListeDesMots.NewIndex) = varItem
ListeDesCouleurs.ItemData(ListeDesCouleurs.NewIndex) = varItem
ListeDesMots.ListIndex = ListeDesMots.NewIndex
btnModifier.Enabled = True
btnAjouter.Enabled = False
btnSupprimer.Enabled = True
End Sub
Private Sub btnSupprimer_Click()
Static t As Long
If ListeDesMots.ListIndex < 0 Then btnSupprimer.Enabled = False: Exit Sub
For t = 0 To (ListeDesCouleurs.ListCount - 1)
If ListeDesMots.ItemData(ListeDesMots.ListIndex) = ListeDesCouleurs.ItemData(t) Then
ListeDesCouleurs.RemoveItem t
Exit For
End If
Next t
t = ListeDesMots.ListIndex
ListeDesMots.RemoveItem ListeDesMots.ListIndex
If ListeDesMots.ListCount < 1 Then
ztxElement.Text = ""
CouleurElement = 0
ShapeCouleurElement.BackColor = 0
btnModifier.Enabled = False
btnAjouter.Enabled = False
btnSupprimer.Enabled = False
Else
If t > (ListeDesMots.ListCount - 1) Then t = (ListeDesMots.ListCount - 1)
ListeDesMots.ListIndex = t
btnModifier.Enabled = True
btnAjouter.Enabled = False
btnSupprimer.Enabled = True
End If
End Sub
Private Sub btnModifier_Click()
Static t As Long
If ztxElement = "" Then btnModifier.Enabled = False: Exit Sub
For t = 0 To (ListeDesCouleurs.ListCount - 1)
If ListeDesCouleurs.ItemData(t) = ListeDesMots.ItemData(ListeDesMots.ListIndex) Then
ListeDesCouleurs.ItemData(t) = CouleurElement
End If
Next t
End Sub
Private Sub btnChangerCouleur_Click()
ShapeCouleurElement.BackColor = Couleur
CouleurElement = Couleur
End Sub
Private Sub ListeDesMots_Click()
Static BackCouleur As Long
Static t As Long
If ListeDesMots.ListIndex < 0 Then
ztxElement.Text = ""
CouleurElement = 0
ShapeCouleurElement.BackColor = 0
btnModifier.Enabled = False
btnAjouter.Enabled = False
btnSupprimer.Enabled = False
Else
ztxElement.Text = ListeDesMots.List(ListeDesMots.ListIndex)
For t = 0 To (ListeDesCouleurs.ListCount - 1)
If ListeDesCouleurs.ItemData(t) = _
ListeDesMots.ItemData(ListeDesMots.ListIndex) Then _
CouleurElement = CLng(ListeDesCouleurs.List(t))
Next t
ShapeCouleurElement.BackColor = CouleurElement
btnModifier.Enabled = True
btnAjouter.Enabled = False
btnSupprimer.Enabled = True
End If
End Sub
'================================================================
' COLORATION SYNTAXIQUE
'================================================================
'Note: Cette méthode pourait aussi, pour rendre l'utilisation
' moins lourde, se lancer toutes les x millisecondes via
' un timer. Pour cela, il faudrait placer tout ce code
' dans la procédure d'événement du timer...
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
'Méthode par recherche :
'(méthode lente mais c'est pour l'exemple)
Static t As Single
Static tt As Single
Static TextRechercher As String
Static Position As Single
Static varDebut As Single
Static Coul As Long
Static RechercheTerminer As Boolean
'La méthode consiste à recherche tous les mots de la liste
' et à reconsituer les balises RTF.
'Note : plus il y a de mots, plus le programme sera lent!
'Tout d'abord, on récupère la position actuelle du curseur.
Position = RichTextBox1.SelStart
'Efface toutes les couleurs du texte
' Note: une méthode plus fine pourrait être trouvée...
RichTextBox1.SelStart = 1
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = 0 'Encre Noir par défaut...
'Un autre moyen :
'RichTextBox1.TextRTF = RichTextBox1.Text
'S'il n'y a aucun mot, on sort.
If ListeDesMots.ListCount < 1 Then
RichTextBox1.SelStart = Position
Exit Sub
End If
For t = 0 To (ListeDesMots.ListCount - 1)
RechercheTerminer = False
TextRechercher = ListeDesMots.List(t)
For tt = 0 To (ListeDesCouleurs.ListCount - 1)
If ListeDesCouleurs.ItemData(tt) = ListeDesMots.ItemData(t) Then _
Coul = ListeDesCouleurs.List(tt): Exit For
Next tt
varDebut = 1
RichTextBox1.SelStart = varDebut
Do
'rtfMatchCase = Respecter la casse
' (c.a.d. les majuscules et les minuscules)
' Puisque la "Fin" est omise, toutes les recherches
' s'effecturons jusqu'a la fin texte.
'rtfWholeWord = Rechercher par mot.
tt = RichTextBox1.Find(TextRechercher, varDebut, , rtfWholeWord + rtfMatchCase)
If tt = -1 Then
'Il n'y a plus d'occurrence
RechercheTerminer = True
Else
'La recherche à aboutie. Il faut remplacer le mot
' par le mot + les balises RTF de couleur.
'Il faut ensuite placer le curseur à la fin du
' mot pour poursuivre la recherche.
RichTextBox1.SelColor = Coul
varDebut = varDebut + RichTextBox1.SelLength
End If
Loop While RechercheTerminer <> True
Next t
RichTextBox1.SelStart = Position
End Sub
'================================================================
'================================================================
'================================================================
'================================================================
' NOTES DE FIN
'================================================================
' La routine de recherche n'est pas très fine (surtout s'agissant
' de la gestion des espaces et des cas particuliers) mais c'est
' à vous d'en faire ce que vous voudrez.
' Il ne reste plus qu'a rajouter la gestion de l'enregistrement
' des fichiers (RTF ou TXT).
' Notez que ma gestion des couleurs n'est pas très performante.
' Il vaudrait mieux utiliser des PictureBox et utiliser le
' contrôle ActiveX "Microsoft CommonDialog"...
' Je n'ai pas non plus filtré les entrées texte (p.ex. enlever
' les espaces de début et de fin des expressions).
'
' A VOUS DE JOUER !
'================================================================
'================================================================
'================================================================
Historique
- 27 janvier 2005 00:44:48 :
- Ajout du code sur le site...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|