[Delphi] Appeler un composant dynamiquement dans le code

Appeler un composant dynamiquement dans le code [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 11-01-2004 à 13:48:33    

Je créé sur une fiche des composants TEdit en fonction du nombre de ligne dans le résultat d'une requête, et les nommant 'Edit' + l'entier de la position dans la requête. Quand je ferme la fiche, je voudrais pouvoir faire une mise à jour des données en appelant mes TEdit par le nom que je leur ai donné à la création. Le nom de chaque composant varie donc sans arrêt, je ne peux donc pas faire un appel en dur dans le code. Comment faire ?
 
 
J'avais pensé à une chose du genre :
 
(TEdit)(Component.Name['edit' + IntToStr(i)]).Text, mais c'est pas bon, je pense qu'il y a un truc du genre. Quelqu'un sait ?

Reply

Marsh Posté le 11-01-2004 à 13:48:33   

Reply

Marsh Posté le 11-01-2004 à 15:03:52    

Tu peux le faire avec FindComponent mais c'est un peu crade comme méthode.
Il vaudrait mieux garder trace des TEdit que tu crées dans un tableau, genre array of TEdit.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 15:27:14    

tu peux pas faire un heritage de class.

Reply

Marsh Posté le 11-01-2004 à 15:28:33    

:??: je vois pas trop le rapport


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 15:36:27    

ben je ne sais plus si on peux le faire en delphi, mais je suppose que oui. tu recrées une class qui est une liste de tedit, cela te permet d'en rajouter à la volé.
 
et de modifié leur attribut indépendamment


Message édité par bossamiral2 le 11-01-2004 à 15:37:14
Reply

Marsh Posté le 11-01-2004 à 16:03:25    

:??: ici sa question est de récupérer un pointeur sur un objet créé, en donnant le nom de l'objet.
Je lui dis qu'on peut faire ça via FindComponent, mais qu'il est plus efficace de conserver ces pointeurs dans un tableau plutôt que de les rechercher un par un.
En effet il pourrait mettre sa liste dans une classe (dérivant de TList par ex) mais un simple tableau suffit dans ce cas-ci.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 16:21:35    

c'est vrai, mais j'étais plus partie sur  
 
"Je créé sur une fiche des composants TEdit en fonction du nombre de ligne dans le résultat d'une requête"
 
Et j'ai supposé que le nombre de ligne changait assez fréquemment.  Voilà

Reply

Marsh Posté le 11-01-2004 à 16:46:26    

Effectivement, le nombre de ligne change très souvent. Mais par contre, je peux initialiser mon tableau de manière claire, car je sais quelle est le nombre de ligne au moment ou je créé ma fiche (avec RecordCount).
 
Je peux donc passer par un tableau, je vais tester.

Reply

Marsh Posté le 11-01-2004 à 16:50:20    

Tu peux déclarer un tableau n'ayant pas de taille (= tableau dynamique) puis faire un SetLength(Tableau, nombre de lignes) juste avant de créer tous tes TEdit ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 19:40:49    

C'est bon, j'ai fait un tableau dynamique de TEdit, et tout se passe bien. Merci à tous. ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed