using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropServices; namespace Decouverte { public partial class Ecran_Liste : Form { [DllImport("user32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage(IntPtr hWnd, int Msg, int Wparam, int lParam); private bool lModif; private int Ecriture = 0x019A; private int Lecture = 0x0199; public Ecran_Liste() { InitializeComponent(); } private void Ecran_Liste_Load(object sender, EventArgs e) { lModif = false; } private void LbPersonne_SelectedIndexChanged(object sender, EventArgs e) { Activer(true); } private void Activer(bool lPrincipal) { lb_personne.Enabled = lPrincipal; btn_ouvrir.Enabled = btn_enregistrer.Enabled = lPrincipal; btn_ajouter.Enabled = btn_modifier.Enabled = btn_supprimer.Enabled = lPrincipal; GBEDITION.Enabled =! lPrincipal; } private void btn_ajouter_Click(object sender, EventArgs e) { Activer(false); lb_personne.ClearSelected(); } private void btn_supprimer_Click(object sender, EventArgs e) { int nItem = lb_personne.SelectedIndex; if (nItem >= 0) { int numOrdre = SendMessage(lb_personne.Handle, Lecture, nItem, 0); lb_personne.Items.RemoveAt(nItem); for (int i = 0; i < lb_personne.Items.Count; i++) { if (SendMessage(lb_personne.Handle, Lecture, i, 0) > numOrdre) SendMessage(lb_personne.Handle, Ecriture, i, SendMessage(lb_personne.Handle, Lecture, i, 0) - 1); } lModif = true; } else MessageBox.Show("Sélectionner d'abord un enregistrement!"); } private void btn_ouvrir_Click(object sender, EventArgs e) { //Enregistrer la liste existante DialogResult rep = DLG_OUVRIR.ShowDialog(); if (rep == DialogResult.OK) { lb_personne.Items.Clear(); StreamReader fic = new StreamReader(DLG_OUVRIR.FileName); string lecture = fic.ReadLine(); while (lecture != null) { int n= lb_personne.Items.Add(lecture.Substring(0,1 + lecture.IndexOf(')'))); SendMessage(lb_personne.Handle, Ecriture, n, int.Parse (lecture.Substring(1+ lecture.IndexOf(')')))); lecture = fic.ReadLine(); } fic.Close(); lbl_nomFichier.Text = DLG_OUVRIR.FileName; lModif = false ; } } private void btn_enregistrer_Click(object sender, EventArgs e) { DialogResult rep = DLG_Save.ShowDialog(); if (rep == DialogResult.OK) { StreamWriter foc = new StreamWriter(DLG_Save.FileName); for (int i = 0; i < lb_personne.Items.Count; i++) foc.WriteLine(lb_personne.Items[i] + SendMessage(lb_personne.Handle, Lecture, i, 0).ToString() ); foc.Close(); lbl_nomFichier.Text = DLG_Save.FileName.Substring(1 + DLG_Save.FileName.LastIndexOf("\\")); lModif = false; } } private void BTN_CONFIRMER_Click(object sender, EventArgs e) { if (lb_personne.SelectedIndex == -1) { int n = lb_personne.Items.Add(TB_NOM.Text + " (" + CB_Qualite.Text + ")"); SendMessage(lb_personne.Handle, Ecriture, n, lb_personne.Items.Count); } else { int n = SendMessage(lb_personne.Handle, Lecture, lb_personne.SelectedIndex,0); lb_personne.Items[lb_personne.SelectedIndex] = TB_NOM.Text + " (" + CB_Qualite.Text + ")" ; SendMessage(lb_personne.Handle, Ecriture, lb_personne.SelectedIndex, n ); } Activer(true); lModif = true; } private void BTN_ANNULER_Click(object sender, EventArgs e) { Activer(true); } private void lb_personne_DoubleClick(object sender, EventArgs e) { int nItem = lb_personne.SelectedIndex; if (nItem >= 0) { int nPos = SendMessage(lb_personne.Handle, Lecture, nItem, 0); MessageBox.Show(lb_personne.Text + " en position " + nItem.ToString() + " (encodé en " + nPos.ToString() + ")"); } else MessageBox.Show("Sélectionner d'abord un enregistrement. "); } private void btn_modifier_Click(object sender, EventArgs e) { if (lb_personne.SelectedIndex >= 0) { Activer(false); string tmp = (string) lb_personne.SelectedItem; TB_NOM.Text = tmp.Substring(0, tmp.IndexOf('(') - 1); // Juste le nom tmp= tmp.Substring(tmp.IndexOf('(')+1); // Le nom et ( sont bouges tmp = tmp.Substring(0, tmp.Length - 1); //Juste la qualite for (int i = 0; i < CB_Qualite.Items.Count; i++) if ((string)CB_Qualite.Items[i] == tmp) { CB_Qualite.SelectedIndex = i; break; } } else MessageBox.Show("Sélectionner un enregistrement", "Avertissement"); } private void Ecran_Liste_FormClosing(object sender, FormClosingEventArgs e) { if (lModif) if (MessageBox.Show("Enregistrer les modifications ?", "Modification", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) btn_enregistrer_Click(null, null); } } } //Quitter // 1. QUITTER => SAUVEGARDER si nécessaire // 2. Permettre la modification d'une fiche // 3. Récupérer l'ordre d'encodage dans le fichier //Enregistrer avec N° d'accès + Récupération // Nom (qualité) N°