OUVRIR/FERMER LES PORTS AVEC VISUEL ET CHECKBOX

Signaler
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009
-
Messages postés
3
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
7 octobre 2006
-
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

Messages postés
3
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
7 octobre 2006

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
Messages postés
227
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
26 avril 2012

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.
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009

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.
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
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() !
Messages postés
170
Date d'inscription
jeudi 11 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2009

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!