whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009
-
24 févr. 2009 à 09:58
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009
-
24 févr. 2009 à 10:51
Salut à tous,
J'ai un petit bout de code dans mon programme qui me parait pas très ... optimiser ou "propre" mais je ne trouve pas l'algorithme pour l'écrire plus correctement...
Avez vous une idée svp ? (les isBold, isItalic... sont des variables de type booleenes)
If isBold And isItalic And isUnderline And isStrikeout Then 'instruction
ElseIf isItalic And isUnderline And isStrikeout Then 'instruction
ElseIf isBold And isUnderline And isStrikeout Then 'instruction
ElseIf isBold And isItalic And isStrikeout Then 'instruction
ElseIf isBold And isItalic And isUnderline Then 'instruction
ElseIf isBold And isItalic Then 'instruction
ElseIf isItalic And isUnderline Then 'instruction
ElseIf isUnderline And isStrikeout Then 'instruction
ElseIf isBold And isStrikeout Then 'instruction
ElseIf isBold Then 'instruction
ElseIf isItalic Then 'instruction
ElseIf isUnderline Then 'instruction
ElseIf isStrikeout Then 'instruction
End If
Merci d'avance
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 févr. 2009 à 10:29
ok ^^
en fait, tu cherches a combiner les flags
FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline Or FontStyle.Strikeout
simple, donc :
Dim eFlags As System.Drawing.FontStyle
If isBold Then
eFlags = FontStyle.Bold
End If
If isItalic Then
eFlags = eFlags Or FontStyle.Italic
End If
If isUnderline Then
eFlags = eFlags Or FontStyle.Underline
End If
If isStrikeout Then
eFlags = eFlags Or FontStyle.Strikeout
End If
myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), eFlags)
au choix aussi, stocker la valeur résultante (eFlags) qui n'est au final qu'un numérique entier
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 févr. 2009 à 10:43
enreigstrer ces champs séparement est une bonne solution, au contraire, elle est ouverte...
en lisant le fichier XML, on ne voit pas un obscur 12 pour le style...
on voit underline, bold.... c'est parlant, c'est le but de l'XML, d'être parlant.
quant a la police, c'est bien le seul moyen... au framework de te créer a chaque fois une police logique répondant a tes parametres. si tu mentionne une font inexistante sur un poste, il en prendra une autre, pas grave.
reste que ca n'est faisable que si la font est recréée de toute pièce.
C'est un integer, et oui. On a combiné les flags.
c'est possible parce que leur valeurs sont des multiples de 2:
1, 2, 4 et 8
ainsi, si on à la valeur 13, on sait que c'est une combinaison de 1, 4 et 8
l'extraction de tel ou telle valeur est simple, il suffit de faire un Mask des bits, a l'aide de And :
(13 And 1) donne 1
(13 And 2) donne 0
(13 And 4) donne 4
(13 And 8) donne 8
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 févr. 2009 à 10:45
pour le tableau logique, fait sur une feuille de papier pour s'assurer de couvrir tous les cas.
pas utile de passer par un tableau à deux dimensions ici...
Vous n’avez pas trouvé la réponse que vous recherchez ?
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 24 févr. 2009 à 10:08
Salut,
Exact... il manque des conditions...
En gros il y a 4 variables de type booléennes et je voudrais couvrir toutes les possibilité de combinaisons de ces variables ( qui sont explicites avec leur noms...)
Est-ce clair ? je me suis compris moi
LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 24 févr. 2009 à 10:22
Re,
Je ne voulais pas rendre mon message illisible, mais maintenant que tu as saisis ce que je recherche je te donne le complet:
If isBold And isItalic And isUnderline And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline Or FontStyle.Strikeout)
ElseIf isItalic And isUnderline And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Italic Or FontStyle.Underline Or FontStyle.Strikeout)
ElseIf isBold And isUnderline And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Underline Or FontStyle.Strikeout)
ElseIf isBold And isItalic And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Italic Or FontStyle.Strikeout)
ElseIf isBold And isItalic And isUnderline Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline)
ElseIf isBold And isItalic Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Italic)
ElseIf isItalic And isUnderline Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Italic Or FontStyle.Underline)
ElseIf isUnderline And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Underline Or FontStyle.Strikeout)
ElseIf isBold And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold Or FontStyle.Strikeout)
ElseIf isBold And isUnderline Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Underline Or FontStyle.Bold)
ElseIf isItalic And isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Italic Or FontStyle.Strikeout)
ElseIf isBold Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Bold)
ElseIf isItalic Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Italic)
ElseIf isUnderline Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Underline)
ElseIf isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option" , "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")), FontStyle.Strikeout)
ElseIf Not isBold And Not isItalic And Not isUnderline And Not isStrikeout Then myFont = New Font(LireNoeudEnfantXML(Path, "Option", "PoliceStyle"), CSng(LireNoeudEnfantXML(Path, "Option", "PoliceTaille")))
End If
je créer une nouvelle police selon chaque ca, c'est le seul moyen que j'ai trouvé pour stocker un police dans mon fichier d'initialisation de mon programme... je suis donc même prêt à tous changé si il existe une meilleur solution pour sauvegarder une police complète...
LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 24 févr. 2009 à 10:37
Re,
Tout simplement parfait!!!!!
Je n'avais pas vu que fontstyle avait pour résultante un integer ....
Par je crois que ma méthode de base n'est pas terrible pour sauvegarder ma police... ( Nom, Taille, Couleur, style)
Je sauvegarde chaque paramètre dans un fichier XML puis j'extrait tout au chargement puis je passe le code ci-dessus... Connais tu une meilleure solution pour sauvegarder une police complete ?
LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent
whitelegend
Messages postés156Date d'inscriptionvendredi 13 janvier 2006StatutMembreDernière intervention 2 mars 2009 24 févr. 2009 à 10:40
Ah ok, super instructive ton explication du tableau je me l'enregistre dans un coin de ma mémoire celle là !!
Par contre comment réaliser tel tableau si j'avais voulu l'utiliser ?
Je sais créer des tableaux mais, là il y a 4 dimension plus cette incrémentation .... ca dépasse mes connaissances pour le moment et je suis très curieux d'apprendre de nouvelles choses.
LC
__________________________________________________________________________
Pensez à accepter les réponses qui vous servent