[.net] barre de boutons "office style"

Hello,
une petite question avec C# et Visual Studio 2003.
J’aimerais créer une toolbar comme celle de Office 2003, déplaçable et avec les petits points sur le côté pour la déplacer comme on veut.

J’ai essayé le composant “ToolBar” mais ça ne fonctionne pas, d’ailleurs la propriété “Locked” n’a aucun effet sur ce composant…

Quelqu’un saurait m’aider?
merci

si c’est pour un soft perso ou dispo gratuitement, tu peux utiliser Sandbar, dispo ici : divil.co.uk

sinon il y a CommandBar ici : Lutz Roeder’s Programming.NET, qui cette fois doit être gratuit.

et je pense qu’il doit y en avoir d’autres…

PS: c’est des liens que j’ai mémorisé “pour plus tard”, mais je n’en ai essayé aucun…

La SandBar est une vraie merveille à utiliser, elle est gratuite, si tu l’utilise dans le cadre du developpement d’un programme gratuit, qu’il soit open-source ou non.

J’ai un peu pratiqué CommandBar, il y a quelques bugs agacents et on ne peut pas profiter du Designer Windows.Forms, faut tout coder a la main, c’est assez long et chiant quand tu fait de l’interface je trouve.

Si c’est pour un projet payant, c’est sur qu’il vaut mieux utiliser ce dernier, car la licence SandBar coute assez cher.

:stuck_out_tongue:

Et si tu as .Net 2.0 ca y est dedans :stuck_out_tongue:

[quote name=‹ GloP › date=’ 2 Dec 2004, 21:43’]Et si tu as .Net 2.0 ca y est dedans :stuck_out_tongue:
[right][post=« 309488 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Ah ok, je me disais aussi que c’était bizarre que ça ne soit pas inclu directement dans .net

Mais la version 2.0 est encore en beta, c’est juste? La beta est open pour tout le monde? Il y a une version beta de Visual Studio pour l’utiliser?

J’imagine qu’il faut le framework .net 2.0 pour faire fonctionner les programmes?

A part ça, pour les développement internes (Office etc.) ils n’utilisent pas leurs outils de développement MS ?

Sinon, c’est effectivement pour un logiciel gratuit, donc j’ai utilisé SandBar, et effectivement c’est superbe, un grand merci à Valdef et Le_K pour les réponses!

Tu peux downloader la beta oui avec les visual studio express pour winform par exemple qui va t’installer la beta1 du framework et un VS beta 1 aussi.

Sinon la c’est du managed code, les controles d’office ils sont developpes par office, pour office, pour leur joli programme a eux qu’ils ont. Ca fait pas parti des common controls de l’OS. Les controles en managed ils sont completement independant, meme si ils ont le meme look. Le fait qu’on mette les “meme” dans .net est bien posterieur au developpement d’Office qui est quand meme bien innovant au niveau de leur controlles et “look” de ce que doit etre une appli windows. Il travaillent super independament du reste du MS, en particulier de l’OS ou meme des outils. On croit que c’est une farce que MS respecte pas le fait qu’ils veulent pas donner un avantage injuste du fait que un outil et l’os soient fait dans la meme boite mais z’avez pas idee comme c’est respecte de bien separer office du reste.

Sinon oui oui a MS ils utilisent les outils MS pour developper, ou plutot chaque dev fait ce qu’il veut. Sauf pour nous, comme on code VS, ca serait infame de coder VS avec VS, vu que te faudrait tout quitter a chaque recompile et tout. Donc j’ai vu des types avec VI, d’autre avec emacs, d’autre avec source insight, etc etc. Chez windows et office, je pense que VS est beaucoup utilise. Mais bon apres du moment que tu respecte le convention de codage et les regles espaces/tabs whatever tu fais ton code avec ton outil fetiche, tout le monde s’en fout.

Je connaissais pas sourceinsight. Ca a l’air marrant pour les graphes d’appels… Par contre leurs exemples de choix de couleurs & polices, ça a peut-être pour but de montrer combien c’est personnalisable, mais ca reste tout de même bien immonde leurs screenshots :stuck_out_tongue:

(Comment ça osef de l’interface d’un ide ? :P)

[quote name=‹ Styx31 › date=’ 8 Dec 2004, 12:43’]Je connaissais pas sourceinsight. Ca a l’air marrant pour les graphes d’appels… Par contre leurs exemples de choix de couleurs & polices, ça a peut-être pour but de montrer combien c’est personnalisable, mais ca reste tout de même bien immonde leurs screenshots :stuck_out_tongue:

(Comment ça osef de l’interface d’un ide ? :P)
[right][post=« 311258 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Oui c’est moche mais c’est probablement pour ca que j’utilise pas ce jeu de couleur mais plutot celui la :stuck_out_tongue: Voir exemple attaché. La on s’en sort mieux de suite, apres avoir changé la fonte, les couleurs et le comportement par defaut :stuck_out_tongue:

Tout de suite je trouve beaucoup moins débile le concept de proposer une taille particulière pour certains mots clés, genre les noms de classe.

Et puis les détails genre le != qui semble se transformer en ≠ et les affectations en <-.

PS : Pour revenir (un peu) au sujet, je suis en train de me fendre la poire (avec la masse rosâtre qui fait office de cerveau incluse) à faire un contrôle asp.net qui permette de faire des toolbar dans ce style (un peu comme freetextbox). J’ai pas trouvé grand chose sur le net en “tout cuit”, et puis j’ai trouvé que ça pouvait être pas mal pour se creuser la tête. Si des gens sont intéressés et que je trouve le temps, je tâcherai d’en faire quelque chose de reprenable.

Bon… toujours pour la même application… j’ai un nouveau soucis.

J’ai un datagrid et j’aimerais que la ligne complète soit sélectionnée plutôt que juste la case. Impossible de trouver comment faire…

J’ai aussi de la peine à comprendre exactement comment fonctionnent les DataGrid avec les DataAdapter…
J’aimerais faire une recherche à la iTunes. L’utilisateur commence à entrer des caractères et le programme n’affiche que les enregistrements qui correspondent avec le chaîne entrée.
Le problème c’est que malgré le bouquin sur C# que je me suis acheté… je comprends pas comment le faire.
Je dois mettre une commande sur le DataSet??

Même problème pour ajouter ou modifier une ligne d’ailleurs.

En fait, je fais une connection sur un fichier .csv avec une DataConnection, ensuite je créer le DataAdapter (SELECT * FROM monFichier.csv)
je remplis mon DataSet et je met au DataGrid comme DataSource le fichier .csv.

Jusque là impeccable, tout s’affiche correctement (si ce n’est que j’aimerais changer le nom des colonnes et que je trouve pas comment faire).

Ensuite j’aimerais que l’utilisateur puisse sélectionner une des lignes et cliquer sur des boutons pour soit : Supprimer la ligne complète (l’enregistrement) ou éditer l’enregistrement (dans une autre fenêtre).
J’aimerais aussi qu’il puisse ajouter un enregistrement.

J’aimerais que le résultat de ces actions soient directement affichées mais pas écrite dans le fichier, l’utilisateur doit cliquer sur Enregistrer pour la sauvegarde.

Hum… bref… j’ai besoin d’un petit coup de main en fait… même un gros…

J’espère qu’une bonne âme pourra m’aider avec ça… merci d’avance

Houla :stuck_out_tongue:

Ben, la, je pense que tu vas pouvoir trouver ton bonheur un peu partout sur le web, ou dans ton bouquin si il est bon, mais je te rassure tout cela est faisable sans se prendre trop la tete :stuck_out_tongue: A priori c’est prevu pour. Maintenant la c’est un peu flou comme probleme que tu poses et c’est plus « ecrivez moi mon application » sans vouloir t’offenser… Tu auras plus de succes avec des questions precises sur des bouts de code et des trucs qui marchent pas en particulier.

En general si tu veux editer dans une autre fenetre c’est que tu veux pas utiliser une datagrid sur la fenetre principale mais une listview en mode details, c’est a priori pour ca que ca existe :stuck_out_tongue: La semantique de la grille c’est que tu peux editer les valeurs « in site ». Maintenant tout depend de ton appli, mais choisir le bon control pour le bon job est souvent ce qui est le plus dur quand on debarque dans le devel d’applis client.

[quote name=‹ GloP › date=’ 9 Dec 2004, 19:40’]Maintenant la c’est un peu flou comme probleme que tu poses et c’est plus « ecrivez moi mon application » sans vouloir t’offenser…
[right][post=« 311534 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Hum… en me relisant effectivement c’est un peu ça :stuck_out_tongue:

Bon je vais essayer de poser des questions précises.

Ok, donc premièrement l’utilisation du DataGrid était pas judicieuse… je m’en rend compte maintenant…
Je veux donc utiliser une listView, qui représente plus ce que je veux faire.
J’ai trouvé sur le net un code pour ajouter des entrées d’un dataset dans une listview :

[code]// Attach Subitems to the ListView
 listView1.Columns.Add(« Politesse », 300, HorizontalAlignment.Left);
 listView1.Columns.Add(« Nom », 70, HorizontalAlignment.Left);
 listView1.Columns.Add(« Prénom », 70, HorizontalAlignment.Left);
 listView1.Columns.Add(« Adresse 1 », 100, HorizontalAlignment.Left);
 DataTable dtable = dataSet1.Tables[0];
 listView1.Items.Clear();
 foreach (DataRow drow in dtable.Rows)
 {
   // Only row that have not been deleted
   if (drow.RowState != DataRowState.Deleted)
   {
   // Define the list items
   ListViewItem lvi = new ListViewItem(drow[« Politesse »].ToString());
   lvi.SubItems.Add (drow[« Nom »].ToString());
   lvi.SubItems.Add (drow[« Prénom »].ToString());
   lvi.SubItems.Add (drow[« Adresse 1 »].ToString());

   // Add the list items to the ListView
   listView1.Items.Add(lvi);
   }
 }[/code]
le problème c’est que lorsque les item sont ajoutés, ils sont ajoutés dans de nouvelles colonnes, pas dans celles que j’ai créées.

Maintenant, pour la recherche… j’ai encore relu mon bouquin mais je comprends toujours pas. Je dois faire la recherche sur quel composant?
Je dois redéfinir le paramètre selectCommand du oleDbAdapter?
Ce qui voudrait dire qu’à chaque fois que je fais une recherche, je dois modifier le select, remplir mon dataset et afficher mon dataset dans ma listView?

Pour l’ajout / suppression / modification, j’ai regardé une nouvelle fois mon bouquin… Si je comprends bien, je dois créer une DeleteCommand (insert, update) pour le dataAdapter.

je vous met l’exemple pour l’utilisation d’une DeleteCommand de mon bouquin :

[code]// Suppression dans le dataset, dans la table P la ligne 2
// Commande SQL : DELETE Pers WHERE NUM = ?
oDS.Tables[« P »].Rows[2].Delete;

//Passer l’argument à la commande de suppression
oDA.UpdateCommand.Parameters[« NUM »].Value = Num;
oDA.Update(oDS, « Pers »);[/code]

Le truc que je comprends pas ici, c’est d’où vient ce Num que l’on passe comme paramètre…

[quote name=‘Gimly’ date=’ 10 Dec 2004, 12:33’]Je veux donc utiliser une listView, qui représente plus ce que je veux faire.
J’ai trouvé sur le net un code pour ajouter des entrées d’un dataset dans une listview :

[code]// Attach Subitems to the ListView
listView1.Columns.Add(“Politesse”, 300, HorizontalAlignment.Left);
listView1.Columns.Add(“Nom”, 70, HorizontalAlignment.Left);
listView1.Columns.Add(“Prénom”, 70, HorizontalAlignment.Left);
listView1.Columns.Add(“Adresse 1”, 100, HorizontalAlignment.Left);
DataTable dtable = dataSet1.Tables[0];
listView1.Items.Clear();
foreach (DataRow drow in dtable.Rows)
{
// Only row that have not been deleted
if (drow.RowState != DataRowState.Deleted)
{
// Define the list items
ListViewItem lvi = new ListViewItem(drow[“Politesse”].ToString());
lvi.SubItems.Add (drow[“Nom”].ToString());
lvi.SubItems.Add (drow[“Prénom”].ToString());
lvi.SubItems.Add (drow[“Adresse 1”].ToString());

	// Add the list items to the ListView
	listView1.Items.Add(lvi);
}
  }[/code]

le problème c’est que lorsque les item sont ajoutés, ils sont ajoutés dans de nouvelles colonnes, pas dans celles que j’ai créées.[right][post=“311707”]<{POST_SNAPBACK}>[/post][/right][/quote]
A mon avis, tu ajoutes les colonnes deux fois.

Parce que le code que tu as mis là créé les colonnes de la listview, donc si en plus tu les créées en mode design ou avant, tu vas te retrouver avec les colonnes deux fois.

Sinon pour le reste, est-ce que tu as essayé de voir avec les DataView, c’est à dire charger ta table complète dans le DataTable, puis obtenir un DataView et appliquer des filtres dessus. Ca evite de devoir refaire un select systématiquement.

[quote name=‘Styx31’ date=’ 10 Dec 2004, 14:47’]A mon avis, tu ajoutes les colonnes deux fois.

Parce que le code que tu as mis là créé les colonnes de la listview, donc si en plus tu les créées en mode design ou avant, tu vas te retrouver avec les colonnes deux fois.
[right][post=“311762”]<{POST_SNAPBACK}>[/post][/right][/quote]

Arf quel crétin… en effet, j’avais pas vu que dans le code autogénéré en mode design les colonnes étaient créées… no comment.

[quote name=‘Styx31’ date=’ 10 Dec 2004, 14:47’]Sinon pour le reste, est-ce que tu as essayé de voir avec les DataView, c’est à dire charger ta table complète dans le DataTable, puis obtenir un DataView et appliquer des filtres dessus. Ca evite de devoir refaire un select systématiquement.
[right][post=“311762”]<{POST_SNAPBACK}>[/post][/right][/quote]

J’ai regardé pour les DataView (d’ailleurs mon bouquin n’en parle même pas… je comprends pas pkoi). J’ai vu qu’il y avait des méthodes pour faire une recherche mias je n’ai pas trouvé pour appliquer un filtre.

Par contre j’ai trouvé créer un ListView avec databinding
qui m’a l’air assez sympathique, et qui pourrait résoudre quelques un de mes soucis en transformer une ListView en DataListView…
Je vais essayer et je vous en reparle.

Sinon, pour les modifications dans la base, personne peut me dire? Je comprends toujours pas trop bien

Bon… je n’arrive pas à faire fonctionner cette DataListView…
Je suis donc retourné au point de départ…

si qqn a une autre idée…

Regarde du côté de la propriété RowFilter :stuck_out_tongue:

Bon, en fait j’ai réussi à me débrouiller.
J’ai effectivement utilisé le rowFilter, ça a marché nickel.

En fait le gros soucis que j’ai eu c’est qu’il n’est pas possible de faire une mise à jour sur une base de donnée en mode texte…

Du coup j’ai dû le faire à la main, mais finalement c’était presque plus simple :stuck_out_tongue:

Voilà voilà, merci à tous pour votre aide !

Si qqn est intéressé par le programme que j’ai fait => PM… (même si je doute que ça intéresse qqn :P)