sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008
-
20 avril 2005 à 15:13
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
22 avril 2005 à 15:23
Salut tout le monde...
J'ai un souci avec un fichier XML...alors je suis sous Visual C# et j'ai un menu composé de 3 boutons, de 3 linklabels et d'un listBox...ce que j'aimerais faire, c'est que les textes affichés tant sur les boutons que par les linkabels que dans la listbox soient piochés dans un fichier XML...le hic c'est que je ne sais pas comment m'y prendre ! je découvre le XML et ai déjà épluché 2 tuto et demi (le 3eme est en cours...) mais je reste un peu dans le flou...de même j'ai trouvé une très bonne description des classes XmlTextReader et XmlTextWriter ici : http://www.supinfo-projects.com/2003/xml%5Fcsharp/0/ mais avant de me lancer dans ça je voudrais être sûr que mon fichier est correct...enfin s'il s'organise bien...je vous le présente, si vous pouviez me dire les problèmes qu'il y a svp...merci beaucoup
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- ce fichier XML donne l'arborescence du menu -->
<menu_rech>
<rech_msgs>Recherche de Messages
<mots_clefs>Par Mots Clefs</mots_clefs>
<texte_libre>Par Texte Libre</texte_libre>
<statut>Par Statut</statut>
<list_interf>Liste des Interfaces
<contenu_liste>SELECT interf FROM interface;</contenu_liste>
</list_interf>
</rech_msgs>
<gest_abonnes>Gestion des Abonnés</gest_abonnes>
</menu_rech>
Merci pour toutes remarques,aides, je suis vraiment débutant et je ne vois pas du tout comment m'y prendre pour effectuer cette initialisation du menu via ce fichier...
"Un seul Être vous manque, et tout est dépeuplé..."
A voir également:
Un seul etre vous manque et tout est dépeuplé signification
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 20 avril 2005 à 15:53
Si c'est juste pour afficher des libelles dans tes boutons ou labels,
tu devrais peut-etre plutot utiliser des ressources, ce serait plus
judicieux je pense.
Par contre, si apres tu dois utiliser ton fichier XML pour une autre raison, j'ai rien dit ^^
Bon, sinon ton fichier, je l'aurais plutot vu comme ca :
<menu_rech>
<rech_msgs str="Recherche de Messages">
<typ_rech>Par Mots Clefs</typ_rech>
<typ_rech>Par Texte Libre</typ_rech>
<typ_rech>Par Statut</typ_rech>
</rech_msgs>
<list_interf>Liste des Interfaces
<contenu_liste>SELECT interf FROM interface;</contenu_liste>
</list_interf>
<gest_abonnes>Gestion des Abonnés</gest_abonnes>
</menu_rech>
Mais je peux me tromper, et puis tout depend de comment tu as envie d'organiser tes données
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 20 avril 2005 à 16:36
Les ressources c'est assez simple a utiliser.
Le principe : un identifiant = une chaine
Si tu utilises Visual studio :
Il te faut creer un fichier .resource ou .resx dans ton projet. Les
fichiers ressources seront "integres" dans ton exe (ou ta dll) a la
compilation.
Quand tu ouvres le fichier ressource, tu as le droit a un tableau avec
plusieurs champs. Le champ name l'identifiant, le champ value la
chaine que tu veux mettre
Ainsi, mettons par exemple :
Name = monButton
Value = Coucou
Ensuite dans le code de ton appli, rajoute les 2 espaces de nom comme suit :
using System.Resources;
using System.Reflection;
Pour acceder aux ressources, il faut un ResourceManager
private ResourceManager rm ;
Et ensuite tu l'instancies comme ca :
rm = new ResourceManager("WindowsApplication1.Resource1", Assembly.GetExecutingAssembly());
Il faut que tu remplaces WindowsApplication1.Resource1 par
[l'espace de nom de ton application].[Le nom de ton fichier ressource sans l'extension]
Et ensuite, pour acceder a une chaine
Button bt1 = new Button(); // je crée un bouton pour l'exemple
bt1.Text = rm.GetString("monButton"); // Demande au ResourceManager d'aller chercher la valeur "monBoutton"
Et roule
Les ressources te permettent aussi d'integrer toutes sortes de fichiers
(sons, images), et presentent aussi l'immense interet de permettre de
localiser les applis, c'est a dire, pour une meme appli, avoir
plusieurs langues, sans avoir a modifier quoique ce soit dans le code.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 21 avril 2005 à 11:06
Je pense pas que ca pose un souci de mettre ta requete de type string,
puisque dans ton code, elle sera de type string aussi (Par exemple, si
tu utilises une instance d'objet OleDbcommand, la prorpiété CommandText
(qui correspond a la requete) est de type string.
Mais pourquoi ne pas la mettre en dur dans ton code ?
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 20 avril 2005 à 16:05
décidément tu me sers de dictionnaire universel MX !
bah en fait, a l'affichage, j'ai 2 boutons dispo:
Recherche de Messages
Gestion des Abonnés
mais quand on clique sur le premier, ca fait un sous-menu avec les 3 linklabels et le 3eme boutons...voilà le schéma de mon menu
Recherche de Messages
Par Mots Clefs
Par Texte Libre
Par Statut
Liste des Interfaces
<là ma listBox>
Gestion des Abonnés
le truc, c'est que ce menu doit être dynamique pour qu'au cas où y'ai besoin de changer/ajouter des trucs ben ce soit faut dans le fichier xml plutot que dans le code directement....ce qui m'a amené a cette question: est-ce que cela veut dire que je dois implémenter mes boutons et leurs actions dans mon fichier XML aussi...?? :s:s auquel cas ce serait bien bien chiant, je reconnais...:( si je peux faire autremet ça serait mieux...
merci pour tes corrections, mais tu vois justement quand je dis que je suis perdu dans le XML c que je comprends pas très bien les balises à valeur...genre ton str ca donne le nom du groupe parent qui aura les 3 type-rech comme enfant, c bien ca...? et si oui, c bien cette chaine qui sera prise en compte lors de la lecture du fichier par XmlTextReader ? et encore une fois, si on continue par là, si ce que j'ai dit est correct, est-ce que la fonction va savoir prendre ce qu'il ya ENTRE les balises type_rech dans les fils...?
(je sais pas si c bien bien clair tout ca lol)
merci (encore!) en tous cas...tu m'aides beaucoup ;)
"Un seul Être vous manque, et tout est dépeuplé..."
Vous n’avez pas trouvé la réponse que vous recherchez ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 20 avril 2005 à 16:17
Ma question est : est-ce que ce contenu du fichier est succeptible de
changer plus tard ?(je parle pas de pendant la phase de développement,
où là je me doute que c'est censer changer)
C'est a dire, par exemple, est ce qu'il peut y avoir avec le temps, d'autres balises comme :
Par Mots Clefs
Par Texte Libre
Par Statut
Et donc, est ce que ca va impliquer l'ajout dynamique de linklabel sans avoir a retoucher le code?
Ou alors, s'il y a des changements, est-ce que tu penses que ce sera avec recompilation du code ?
Parce que je pense vraiment que dans ton cas, il faut utiliser des
ressources, et que ca ne sert a rien de s'embeter avec du xml.
le "str", c'est ce qu'on appele un attribut. je l'ai mis la parce qu'il
concerne les 3 noeuds enfants. Maintenant, j'ai fait ca intuitivement,
je saurais pas t'expliquer la raison de "pourquoi il faut faire comme
ca" ;)
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 20 avril 2005 à 16:22
lol ok ok je pense que ton intuition est proche de celle du HTML enfin je pense avoir compris mais je ne suis pas spécialement capable d'expliquer non plus...enfin bref
oui je pense que des ressources seraient mieux car je pense qu'il n'y aura pas de modification dynamique sans recompilation...enfin je pense pas que ce soit nécessaire quoi...donc oui pour les ressources...mais...comment fait-on ça avec des ressources au fait...? :-$
merci
"Un seul Être vous manque, et tout est dépeuplé..."
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 21 avril 2005 à 11:01
hmm...merci pour ta réponse...je vois comment ça simplifie vis-à-vis du XML, mais j'ai eu un peu de mal à m'en servir...toutefois j'y suis enfin arrivé ! Je vais décrire au cas où ça pourrait intéresser quelque personne que ce soit...voilà ce que j'ai fait...
- J'ai ajouté un fichier ressource à mon projet
- J'ajoute les 2 using que tu m'as cités (System.Reflection & System.Resources)
- Je déclare le RessourceManager dans la classe de mon appli
- J'ai rempli les champs de cette façon:
<name> <value> <type>
Bttn_RechMess Recherche de Messages System.String
LnkLabl_MotsClefs Par Mots Clefs System.String
. . . . . . . . . . . . . . .
- J'instancie le ResourceManager dans le constructeur
- Lorsque j'ai besoin d'afficher mes boutons/linklabels, c'est-à-dire lorsque je lance la connexion, je demande AVANT de les rendre Visibles (Visible=true) d'aller chercher les valeurs correspondantes dans le fichier de ressources
- Je lance mon application, et ça marche...
Je te remercie beaucoup ! ça m'aide considérablement !
Il ne me reste qu'à effectuer différents tests pour savoir si tout marche vraiment bien, a priori je dirais que oui...mais on n'est jamais trop prudent...
Il me reste quand même une dernière question:
pour la ListBox contenant une liste d'interfaces, je dois obtenir cette liste via une requête sur une base...Est-ce que mettre dans le fichier de ressource comme valeur "SELECT blabla etc" et mettre en type String auquel cas devrais-je faire une manip' particulière? ou dois-je m'y prendre autrement...? c'est la grosse interrogation qui demeure...
Merci encore!
"Un seul Être vous manque, et tout est dépeuplé..."
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 21 avril 2005 à 14:14
oui, j'y avais pensé mais si y'a besoin de changer la requête par la suite, c'est peut-être mieux de la laisser dans la config externe...ca assure une certaine pérènité de l'appli, nan? enfin sinon j'la mets dedans, c'est pas un GRAVE probleme c'est simplement un souci de portabilité temporelle :) (ohh que de grands mots! lol)
"Un seul Être vous manque, et tout est dépeuplé..."
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 22 avril 2005 à 12:41
euuh...maître...j'ai encore un souci...
Voilà en fait j'ai une listeBox à remplir en dynamique aussi, enfin il faut que les éléments soient pris dans le fichier de ressources...Voilà le remplissage normal d'une ListBox
this.ComboBox_ListeBDD.Items.AddRange(
new
object[] {
"BASE N°1 ",
"BASE N°2 ",
"BASE N°3 ",
"... ... ... "});
voilà ce que j'ai essayé:
ComboBox_ListeBDD.Items.AddRange(
new
object[] {resManag.GetString("ComboBox_ListeBDD")});
sachant que dans mon fichier Resource.rscx j'ai mis:
le problème c'est qu'il n'y a qu'une ligne avec TOUT dans ma Liste...je voudrais savoir si c'est possible de réussir à faire qu'avec la String il reprenne toutes les bases...merci...
"Un seul Être vous manque, et tout est dépeuplé..."
ah oui et je précise...ce que j'ai fait, c'est dans le constructeur après l'appel de InitializeComponent(), dans laquelle j'ai viré le remplissage de liste...
"Un seul Être vous manque, et tout est dépeuplé..."
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 22 avril 2005 à 15:21
effectivement j'suis stupide...mais t'as l'air de t'y connaitre en gens stupides lol t'as trouvé pile la connerie que j'avais faite :$ ou alors c a force d'm'aider lol
merci en tous cas ça marche maintenant!
"Un seul Être vous manque, et tout est dépeuplé..."