FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
Nous définissons la taille totale d'un TTreeview comme étant la somme des hauteurs et la somme des largeurs de tous ses nœuds.
Le code ci-dessous calcule cette taille en utilisant la fonction UnionRect de l'API Windows pour additionner les dimensions des différents rectangles correspondants aux noeuds du TTreeview.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function TreeViewSize(ATreeView: TTreeView): TPoint; var TotalRect: TRect; i: integer; begin //les dimensions respectives de TotalRect seront la somme //des dimensions équivalentes de chaque noeud de l'arbre //On initialise TotalRect à 0 pour toutes les dimensions TotalRect:= Rect(0, 0, 0, 0); //Parcours des noeuds de l'arbre for i:=0 to ATreeView.Items.Count-1 do //DisplayRect retourne les dimensions du rectangle, voir l'aide pour plus de détail UnionRect(TotalRect, TotalRect, ATreeView.Items[i].DisplayRect(false)); result.X:= TotalRect.Right; result.Y:= TotalRect.Bottom; end; procedure TForm1.Button1Click(Sender: TObject); var maxSize: TPoint; begin maxSize:= TreeViewSize(TreeView1); //On redimensionne le TTreeview pour qu'il soit complètement visible TreeView1.ClientWidth:= maxSize.X; TreeView1.ClientHeight:= maxSize.Y; end; |
Il suffit de récupérer le TTreeNode qui vous intéresse puis de faire:
Code delphi : | Sélectionner tout |
TreeView1.Items.Item[0].haschildren := True;
De la même façon, on peut aussi simuler qu'un nœud n'a pas de nœud enfant en spécifiant:
Code delphi : | Sélectionner tout |
TreeView1.Items.Item[0].haschildren := False;
Il n'existe pas de propriété permettant de savoir si un TTreeView est actuellement en mode édition d'un item.
Par contre avec le message TVM_GETEDITCONTROL il est possible de connaitre le Handle de la zone d'édition créée pour la modification in situ.
Si la réponse de ce message est non nulle, alors le TreeView est en mode édition.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 | function IsTreeViewEditing(const: TrreView: TTreeView): boolean; Const TVM_FIRST =$1100; TVM_GETEDITCONTROL = TVM_FIRST + 15; begin Result := SendMessage(TreeView.Handle,TVM_GETEDITCONTROL,0,0)<>0; end; |
Il est parfois utile de vouloir forcer le passage en mode édition d'un item d'un TTreeView, comme par exemple pour implémenter la touche F2.
Les méthodes standards du composant ne permettent pas de le faire mais les messages Windows dédiés au TreeView le permettent. Le messsage TVM_EDITLABEL permet de demander le passage en mode édition d'un TTreeView.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 | Const TVM_FIRST =$1100; TVM_EDITLABEL=(TVM_FIRST+65); begin SendMessage(TreeView1.Handle,TVM_EDITLABEL,0,Integer(TreeView1.Selected.ItemID)); end; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.