SURVEILLANCE ÉVÈNEMENT

Utilisateur anonyme - 12 avril 2013 à 11:49
 tictac08 - 27 avril 2013 à 23:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/55076-surveillance-evenement

Mais qu'est-ce qui n'allait pas avec le code de Secondary117 ? Je l'ai essayé, certes, il empeche la fermeture...ce n'est pas ce que tu voulais ?
essaye ça :

Private Sub frmAlerte_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
e.Cancel = True
Me.WindowState = FormWindowState.Minimized
End If
End Sub
mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
18 avril 2013 à 22:27
SECONDARY11
Au cours du remodelage de mon code pour sa maj, je m'aperçois que ta suggestion concernant la sub frmAlerte_FormClosing ne semble pas convenir. En effet, tu proposes dans tous les cas d'empêcher sa fermeture en mettant eventArgs.Cancel = True, alors que je le veux seulement lorsque l'utilisateur clique sur la croix de la form. Donc je maintiens le rôle de ma variable UnloadMode.

Je m'en vais maintenant publier ma maj, mais tous commentaires restent les bienvenus!
Cdt
mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
18 avril 2013 à 15:55
Bonjour SECONDARY117,

Merci pour ton long message constructif, et merci aussi de t'intéresser de si près à mon code.
C'est comme çà que j'aime les échanges sur ce site: améliorations,astuces,idées,et bonnes critiques avec proposition de solutions.
Tout d'abord, il est vrai que l'interface que tu proposes est meilleure que la mienne: je ne suis pas expert en designs pros...
Pour les forms alertes ou alarmes, j'ai seulement voulu montrer ce que l'on pouvait obtenir avec les forms transparentes, sans beaucoup me soucier de la finition des images. On peut bien sûr les améliorer en fonction des goûts (et des talents) de chacun.
Pour les autres "critiques", j'en tiendrai compte dans ma prochaine maj, mais je serais en fait très intéressé de voir le projet modifié comme tu me le propose. Pour çà, il y a une site gratuit de dépose de fichier que je te signale ci-dessous:
http://www.cjoint.com/
Il y en a sûrement d'autres, mais j'ai l'habitude de celui-ci.
Il faut bien sûr que tu m'envoies (via la messagerie VBFrance) l'adresse du lien de ton dépôt.

A+
Cdt
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 1
17 avril 2013 à 23:16
Re, alors 1.je me suis penché sur l'interface, qui ressemble a celle ci:
http://img11.hostingpics.net/pics/587551InterFce.jpg

Ton ancienne interface, pour moi, elle ne faisait pas trop "Pro", si tu vois ce que je veux dire. (violet, grand, italique gras etc..)
J'ai rajouté des icônes, ton logiciel sera légèrement plus lourd mais c'est quand même plus agréable a l'oeil.

Changement de texte de 2 boutons : "cacher" & "désinstaller", je les trouve plus appropriés.
2.J'ai modifié certains bouts de codes (de l'affichage par ex msgbox, le label en rouge "Il NE reste PLUS que")
Important: quand tu fais "Aide", tu as une msgbox avec le titre par défaut et sans image (icône), modifie le code

MsgBox(t)

en

MsgBox(t, MsgBoxStyle.Information, "Aide ?")

3.Dans l'event formclosing, tu t'es complique la vie:

Passage de ca:
Private Sub frmAlerte_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'If AlarmVisible = False Then Exit Sub
Dim Cancel As Boolean = eventArgs.Cancel
Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
'empêche la fermeture par la croix du menu If UnloadMode System.Windows.Forms.CloseReason.UserClosing Then Cancel True
eventArgs.Cancel = Cancel
End Sub

en ça:

Private Sub frmAlerte_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
eventArgs.Cancel = True
Me.WindowState = FormWindowState.Minimized
End Sub
(je me suis permis de mettre "Me.WindowState = FormWindowState.Minimized" a la fin aussi)

Voilà les changements fait à ton projet. Tu devrais changer l'image de tes 2 forms qui alertent l'utilisateur (en mettre de meilleure qualité, et de ne pas faire la form à la "Va-vite" :/

Note: Si tu veux le projet que j'ai modifié, fais moi signe, je ne sais pas si j'ai le droit de poster des lien dropbox ou directs exterieurs au site, il faudra demander a un moderateur :) (deja que j'ai posté une image avec un lien externe ..)

Note2: Si tu n'aimes pas les changements (comme l'interface), libre a toi de t'exprimer, c'est une suggestion.

Sur ce, bonne continuation
Secondary
mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
17 avril 2013 à 15:12
Bonjour SECONDARY117,

Peux-tu être + précis, je ne comprends pas bien ce que tu proposes?
Je suis prêt à améliorer l'interface, d'autant plus que je m'apprête à diffuser une maj tenant compte des remarques de BANANA32.

Cdt
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 1
17 avril 2013 à 14:47
pas mal mais il faudrait juste mieux faire l'interface (interface avec couleur "control", boutons couleur "control" egalement, pourquoi pas avec des icones sur chaque bouton ?)
mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
15 avril 2013 à 01:44
Salut BANANA32,

Pour ne pas rester ignare, peux-tu STP me dire par quoi remplacer DoEvents en VB.Net?
Je n'ai rien trouvé de clair dans mes recherches sur le web, mais j'ai constaté que même Microsoft faisait toujours référence à DoEvents qui est toujours applicable dans les cas simples (comme le mien par ex).

Merci d'avance

Cdt

PS. Je voulais dire au contraire que le VB6 était + simple!
Utilisateur anonyme
12 avril 2013 à 23:10
1 / C'est loin d'être un détail. Active donc Strict pour constater les problèmes.
2 et 4 / Je m'étouffe toujours quand je lis un code contenant DoEvents ou On Error en .NET
3 / Pour une clé registre, de la même manière que tu fermes un fichier, tu la ferme :D
5 / Fais une recherche msdn sur la classe Convert.

Pour la note, c'était une boutade...
Et tu as parfaitement raison, vb6 est pénible et lourd ;)
mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
12 avril 2013 à 19:21
Bonjour BANANA32,

Je te remercie beaucoup de t'intéresser à mon code et de tes commentaires. Je te réponds ci-dessous:
1/ Ok, j'aurais dû écrire If txtJ.Text = "1" ou val(txtJ.Text)=1. C'est un petit détail.
2/Désolé, je ne sais pas ce qu'est un "thread secondaire", et
System.Windows.Forms.Application.DoEvents() marche très bien sans compliquer le code.
3/OK,je ne savais pas qu'il fallait fermer la clé (pourquoi au fait, çà marche très bien sans la fermer?)
4/J'ai regardé l'utilisation de TryParse ou autre, çà me parait bien + compliqué que On Error GoTo Erreur...
qui me suffit.
5/Pas compris
6/Bien sûr, je le fais d'habitude.

Merci encore, mais il faut savoir que je ne fais pas un code pour obtenir une note...
Toutefois je sais que je dois progresser pour maitriser le VB.Net,qui est quand même un peu plus pénible et lourd que le VB6.
Enfin, on n'a pas le choix.

Cdt
Utilisateur anonyme
12 avril 2013 à 11:49
Bonjour mimizanzan,

<< (je pratiquai le VB6). >>
C'est une bonne chose de vouloir évoluer. J'ai parcouru ton code rapidement et voici quelques points que j'ai relevé :

1 / Je lis ceci : If txtJ.Text = 1 Then...
Toujours activer Option Strict pour éviter ce type d'erreur.

2 / System.Windows.Forms.Application.DoEvents() est à éviter autant que possible dans le code du thread principal. Dans une application WinForms, il est préférable de mettre en oeuvre un thread secondaire afin de ne pas 'geler' ton application.

3 / Une clé registre doit impérativement être fermée (close) après création ou modification.

4 / On Error GoTo Erreur : Mauvaise habitude venant de vb6 à perdre de toute urgence. On fait des tests ou des tentatives de conversion (IF, Select case, TryParse, Is, Is Not)

5 / Privilégier le recours aux conversions par Convert ou TryParse pour convertir des variables d'un type vers un autre)

6 / Eviter les redondances lors d'un test de variable booléennes. Celles-ci sont justement là pour faciliter l'écriture du code. Ainsi :
If StopDét = True Then
devient :
If Stopdét then
ou If not Stopdét then

Je ne note pas tant qu'une mise à jour n'aura pas été faite ^^
Bon courage et bonne prog.
Rejoignez-nous