private static void InitVariablesDeForm(CFormSelectUnObjetDonnee form, Type tp) { if (typeof(IObjetHierarchiqueACodeHierarchique).IsAssignableFrom(tp)) { form.m_arbre.Dock = DockStyle.Fill; form.m_arbre.Visible = true; IObjetDonneeAutoReference obj = (IObjetDonneeAutoReference)Activator.CreateInstance(tp, CSc2iWin32DataClient.ContexteCourant); form.m_strProprieteListeFils = obj.ProprieteListeFils; form.m_strChampParent = obj.ChampParent; form.m_wndListeElements.Visible = false; } else { form.m_wndListeElements.Visible = true; form.m_wndListeElements.Dock = DockStyle.Fill; form.m_arbre.Visible = false; } }
private void CArbreConsultationHierarchique_BeforeExpand(object sender, TreeViewCancelEventArgs e) { using (sc2i.win32.common.CWaitCursor waiter = new sc2i.win32.common.CWaitCursor()) { TreeNode node = e.Node; if (node.Nodes.Count == 1 && node.Nodes[0].Tag == null) { node.Nodes.Clear(); CNodeConsultationHierarchique data = node.Tag as CNodeConsultationHierarchique; IObjetDonneeAutoReference objetAutoRef = data.ObjetLie as IObjetDonneeAutoReference; CFolderConsultationFolder folderParent = null; folderParent = ((CNodeConsultationHierarchique)node.Tag).Folder as CFolderConsultationFolder; if (objetAutoRef != null && (folderParent == null)) { string strProp = objetAutoRef.ProprieteListeFils; PropertyInfo prop = objetAutoRef.GetType().GetProperty(strProp); if (prop != null) { MethodInfo methode = prop.GetGetMethod(); if (methode != null) { CListeObjetsDonnees listeFils = methode.Invoke(objetAutoRef, new object[0]) as CListeObjetsDonnees; if (listeFils != null) { foreach (CObjetDonnee objet in listeFils) { CNodeConsultationHierarchique dataFils = new CNodeConsultationHierarchique( objet, data.Folder, node.Tag as CNodeConsultationHierarchique); TreeNode newNode = CreateNode(dataFils); node.Nodes.Add(newNode); } } } } } foreach (CFolderConsultationHierarchique folderFils in data.Folder.SousFolders) { CreateNodes(data.ObjetLie, folderFils, node); } } } }
private TreeNode CreateNode(CNodeConsultationHierarchique data) { string strLibelle = data.Folder.GetLibelleNode(data); TreeNode node = new TreeNode(strLibelle); node.Tag = data; node.BackColor = data.Folder.Couleur; int nIndex = -1; if (!m_dicIndexImages.TryGetValue(data.Folder, out nIndex)) { nIndex = -1; Image bmp = data.Folder.Image; if (bmp != null) { m_imageList.Images.Add(bmp); nIndex = m_imageList.Images.Count - 1; } m_dicIndexImages[data.Folder] = nIndex; } if (nIndex >= 0) { node.ImageIndex = nIndex; node.SelectedImageIndex = nIndex; } IObjetDonneeAutoReference objAuto = data.ObjetLie as IObjetDonneeAutoReference; if (data.Folder.SousFolders.Length > 0 || (objAuto != null)) { TreeNode nodeDummy = new TreeNode(); node.Nodes.Add(nodeDummy); } return(node); }