OUVRIR/FERMER LES PORTS AVEC VISUEL ET CHECKBOX

jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009 - 25 mai 2006 à 21:39
Erat78 Messages postés 3 Date d'inscription samedi 16 juillet 2005 Statut Membre Dernière intervention 7 octobre 2006 - 10 août 2006 à 03:25
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/37767-ouvrir-fermer-les-ports-avec-visuel-et-checkbox

Erat78 Messages postés 3 Date d'inscription samedi 16 juillet 2005 Statut Membre Dernière intervention 7 octobre 2006
10 août 2006 à 03:25
Salut,
L'auteur parle de comander une lumière avec un transistor... Ce la (si je ne m'abuse) equivaut à utiliser une carte tout ou rien (la carte en moins!...). QQ pourrait il m'aiclairer a ce sujet...

Bonne journée
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
29 mai 2006 à 13:25
Salut, Je ne pense pas que cette personne ait besoin de 3 commentaires ayant la même idée mais d'1 encouragement ou du suggestion, critique... du contenu de la source, de la matière.

Pour ma part je n'ais pas trop regardé : continue.
jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009
26 mai 2006 à 14:09
Hello Katsankat,

j'aurais adopté exactement la même approche :o); Au final, 2 fonctions sur command1 et command2 plus une ou 2 fonctions de service.
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
26 mai 2006 à 13:52
Salut, autre suggestion: récupérer l' index dans option_click() puis l' utiliser pour éviter la redondance du code. Voici comment j'aurais fait

private ID as integer

private sub option_click()
ID = index
end sub

private sub command_click()

dim FLAG as boolean

If MSComm(index).PortOpen = True Then
MsgBox "Port déja ouvert"
Else
MSComm(index).PortOpen = True

if ID=1 or ID=2 or ID=3 then FLAG=true
Pov.Visible = FLAG
Po.Visible = FLAG
Pfr.Visible = not FLAG
Pf.Visible = not FLAG
End If

end sub

Cette approche évite les tests de condition inutiles.
Le mieux étant de factoriser le code redondant avec une petite fonction:

private sub Ouverture(id as integer)
If MSComm(id).PortOpen = True Then
MsgBox "Port déja ouvert"
else
Pov.Visible = true
Po.Visible = true
Pfr.Visible = false
Pf.Visible = false
end if
end sub

le code en est simplifié:
private sub command_click()
Ouverture(ID)
end sub

Reste à intégrer le command2_click dans la fonction Ouverture() !
jean_marc_n2 Messages postés 170 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 24 janvier 2009
25 mai 2006 à 21:39
Hello,

Tes End If sont mal indentés, chaque Endif doit être sous son IF:

If tutu then
If toto then
' coucou
End If
End If

Ton code est inutilement dupliqué: Dans ce cas, on fait un tableau de controle:
MSComm(1), MScomm(2), etc ..

Il suffit de leur donner le même nom et de changer la propriété index: 0, 1, 2, 3.

Comme ça, plus de code dupliqué :-)

Bonne suite!
Rejoignez-nous