begin process at 2012 02 09 04:33:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

J'AI BESOIN D'AIDE !!!! :O

 > 

identifier une form


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

identifier une form

jeudi 26 décembre 2002 à 09:52:02 | identifier une form

seeev

Bonjour à tous

Voilà, je crée des fenêtres dynamiquement à partir d'un type de fenetre que j'ai appeleé FormGraph enfin peu importe...
Le fait est que je crée un nombre indéfini de fenetres de ce type. A chaque fois qu'une fenetre est crée, elle est stoquée dans un tableau de form. Lors d'un évenement, j'ai besoin de connaitre les caractéristiques de la form en question pour la comparer à celles stoquées dans le tableau

Comment je peux donc identifier une form?
j'ai essayé tableau[i]=sender, tableau[i]=formgraph, de le faire à partir du caption qui est différent pour chaque form, ... mais rien n'y fait, il semble que les données ne se présentent pas de la meme maniere.

Quelqu'un peut-il m'expliquer ce phenomène que je n'arrive vraiment pas à comprendre et me proposer une solution ?

Merci d'avance et bonnes fetes

jeudi 26 décembre 2002 à 11:16:36 | Re : identifier une form

Delphiprog

Administrateur CodeS-SourceS
Pour info, la variable Screen de type TScreen contient déjà un tableau des fiches présentes à l'écran dans une de ses propriétés (Screen.Forms).

Il suffit donc de créer une procédure dans ta fiche principale à laquelle tu passes comme paramètre la référence Sender reçue dans tes fiches TFormGraph.

Supposons que l'unité déclarant Fom1 de type TForm1 soit nommée UForm1 et que la déclaration de la classe de la fiche TFormGraph soit contenue dans UFormGraph :

procedure TForm1.MaProc(Sender : TObject);
begin

end;

Ensuite, dans cette procédure, tu exploites cette référence de la manière suivante :
begin
With TFormGraph(Sender) do
begin
...
end;
end;

Bien entendu, il te faudra déclarer l'utilisation de l'unité UFormGraph dans UForm1 mais aussi UForm1 dans UFormGraph.

Supposons que tu gères l'évènement double clic dans la classe TFormGraph, alors tu transmets la référence à la procédure déclarée dans UForm1 :

procedure TFormGraph.FormGraphDblClick(Sender: TObject);
begin
UForm1.MaProc(Sender);
end;

Ainsi, tu disposes d'une référence sur la fiche de type TFormGraph qui a appelé la procédure.

Il me semble donc inutile de maintenir un tableau, même dynamique. Au pire, utilises une propriété de type TObjectList.

Maintenant, je vais essayer d'expliquer pourquoi ta solution ne peut pas fonctionner, mais effectuons d'abord quelques rappels :

1/- Sender est une référence (un pointeur) sur l'objet qui a déclenché un évènement.

2/- Tableau est un tableau contenant des objets de type TFormGraph. En aucun cas, il ne contient de référence sur les objets qu'il stocke. Il permet tout juste d'accèder aux propriétés et méthodes des objets sur lesquels il pointe. Il stocke une copie des TFormgraph.

C'est surtout cette dernière remarque qui me fait dire qu'il ne sert à rien de stocker les fiches créées dans un tableau.


May Delphi be with you


-------------------------------
Réponse au message :
-------------------------------

> Bonjour à tous
>
> Voilà, je crée des fenêtres dynamiquement à partir d'un type de fenetre que j'ai appeleé FormGraph enfin peu importe...
> Le fait est que je crée un nombre indéfini de fenetres de ce type. A chaque fois qu'une fenetre est crée, elle est stoquée dans un tableau de form. Lors d'un évenement, j'ai besoin de connaitre les caractéristiques de la form en question pour la comparer à celles stoquées dans le tableau
>
> Comment je peux donc identifier une form?
> j'ai essayé tableau[i]=sender, tableau[i]=formgraph, de le faire à partir du caption qui est différent pour chaque form, ... mais rien n'y fait, il semble que les données ne se présentent pas de la meme maniere.
>
> Quelqu'un peut-il m'expliquer ce phenomène que je n'arrive vraiment pas à comprendre et me proposer une solution ?
>
> Merci d'avance et bonnes fetes
>
>
lundi 30 décembre 2002 à 10:24:21 | Re : identifier une form

seeev

Merci pour ton aide
J'ai finalement choisi d'utiliser une TObjectList car j'avais vraiment besoin d'un index qui correspond et à une feuille et à un autre élément.

J'ai une autre question :

je n'arrive pas à libérer la mémoire du tobjectlist de maniere à pouvoir reecrire par dessus
J'ai essayé
someObjList.free;
someObjList:=nil;

for i:=0 to x
someObjList.delete(i);

someObjList.clear;

mais je n'arrive vraiment pas à réécrire par dessus apres.

Merci encore





-------------------------------
Réponse au message :
-------------------------------

> Pour info, la variable Screen de type TScreen contient déjà un tableau des fiches présentes à l'écran dans une de ses propriétés (Screen.Forms).
>
> Il suffit donc de créer une procédure dans ta fiche principale à laquelle tu passes comme paramètre la référence Sender reçue dans tes fiches TFormGraph.
>
> Supposons que l'unité déclarant Fom1 de type TForm1 soit nommée UForm1 et que la déclaration de la classe de la fiche TFormGraph soit contenue dans UFormGraph :
>
> procedure TForm1.MaProc(Sender : TObject);
> begin
>
> end;
>
> Ensuite, dans cette procédure, tu exploites cette référence de la manière suivante :
> begin
> With TFormGraph(Sender) do
> begin
> ...
> end;
> end;
>
> Bien entendu, il te faudra déclarer l'utilisation de l'unité UFormGraph dans UForm1 mais aussi UForm1 dans UFormGraph.
>
> Supposons que tu gères l'évènement double clic dans la classe TFormGraph, alors tu transmets la référence à la procédure déclarée dans UForm1 :
>
> procedure TFormGraph.FormGraphDblClick(Sender: TObject);
> begin
> UForm1.MaProc(Sender);
> end;
>
> Ainsi, tu disposes d'une référence sur la fiche de type TFormGraph qui a appelé la procédure.
>
> Il me semble donc inutile de maintenir un tableau, même dynamique. Au pire, utilises une propriété de type TObjectList.
>
> Maintenant, je vais essayer d'expliquer pourquoi ta solution ne peut pas fonctionner, mais effectuons d'abord quelques rappels :
>
> 1/- Sender est une référence (un pointeur) sur l'objet qui a déclenché un évènement.
>
> 2/- Tableau est un tableau contenant des objets de type TFormGraph. En aucun cas, il ne contient de référence sur les objets qu'il stocke. Il permet tout juste d'accèder aux propriétés et méthodes des objets sur lesquels il pointe. Il stocke une copie des TFormgraph.
>
> C'est surtout cette dernière remarque qui me fait dire qu'il ne sert à rien de stocker les fiches créées dans un tableau.
>
>
> May Delphi be with you
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour à tous
> >
> > Voilà, je crée des fenêtres dynamiquement à partir d'un type de fenetre que j'ai appeleé FormGraph enfin peu importe...
> > Le fait est que je crée un nombre indéfini de fenetres de ce type. A chaque fois qu'une fenetre est crée, elle est stoquée dans un tableau de form. Lors d'un évenement, j'ai besoin de connaitre les caractéristiques de la form en question pour la comparer à celles stoquées dans le tableau
> >
> > Comment je peux donc identifier une form?
> > j'ai essayé tableau[i]=sender, tableau[i]=formgraph, de le faire à partir du caption qui est différent pour chaque form, ... mais rien n'y fait, il semble que les données ne se présentent pas de la meme maniere.
> >
> > Quelqu'un peut-il m'expliquer ce phenomène que je n'arrive vraiment pas à comprendre et me proposer une solution ?
> >
> > Merci d'avance et bonnes fetes
> >
> >
>
lundi 30 décembre 2002 à 10:45:53 | Re : identifier une form

Delphiprog

Administrateur CodeS-SourceS
Qu'entends-tu par "je n'arrive pas à réécrire par dessus après" ?
Si ton TObjectList est détruit (après un appel à Free), comment veux-tu réécrire dessus puisqu'il n'existe plus ?

Si j'ai mal compris ta question, dis le moi.

May Delphi be with you


-------------------------------
Réponse au message :
-------------------------------

> Merci pour ton aide
> J'ai finalement choisi d'utiliser une TObjectList car j'avais vraiment besoin d'un index qui correspond et à une feuille et à un autre élément.
>
> J'ai une autre question :
>
> je n'arrive pas à libérer la mémoire du tobjectlist de maniere à pouvoir reecrire par dessus
> J'ai essayé
> someObjList.free;
> someObjList:=nil;
>
> for i:=0 to x
> someObjList.delete(i);
>
> someObjList.clear;
>
> mais je n'arrive vraiment pas à réécrire par dessus apres.
>
> Merci encore
>
>
>
lundi 30 décembre 2002 à 11:20:03 | Re : identifier une form

seeev

Non, en fait, je veux elever un objet de la liste à partir d'un index donné(c'est mieux mais pas obligatoire)et ensuite réatribuer un autre objet a ce meme index dans la liste

Dans le cas où cet index est 0 et que l'élément à supprimer est le seul de la liste, j'essaie .free (suivi de :=nil et .create) ou .clear sur l'objectList.
Lorsque ensuite, je veux ajouter un objet dans la liste (une formGraph donc), c'est OK mais je ne peux plus fermer cette fenetre. (c'est sur la procedure close que je réiniialise la liste)

Ce que je t'ai donné n'était pas approprié, il est vrai que j'ai du mal à voir d'ou vient le probleme du coup, je m'emmele un peu les pinceaux, j'en suis desole. En y allant pas à pas, il semble que cela vienne des appels à free ou clear.

j'espere que j'ai été plus clair et espere que tu pourras m'aider




-------------------------------
Réponse au message :
-------------------------------

> Qu'entends-tu par "je n'arrive pas à réécrire par dessus après" ?
> Si ton TObjectList est détruit (après un appel à Free), comment veux-tu réécrire dessus puisqu'il n'existe plus ?
>
> Si j'ai mal compris ta question, dis le moi.
>
> May Delphi be with you
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Merci pour ton aide
> > J'ai finalement choisi d'utiliser une TObjectList car j'avais vraiment besoin d'un index qui correspond et à une feuille et à un autre élément.
> >
> > J'ai une autre question :
> >
> > je n'arrive pas à libérer la mémoire du tobjectlist de maniere à pouvoir reecrire par dessus
> > J'ai essayé
> > someObjList.free;
> > someObjList:=nil;
> >
> > for i:=0 to x
> > someObjList.delete(i);
> >
> > someObjList.clear;
> >
> > mais je n'arrive vraiment pas à réécrire par dessus apres.
> >
> > Merci encore
> >
> >
> >
lundi 30 décembre 2002 à 13:40:20 | Re : identifier une form

Delphiprog

Administrateur CodeS-SourceS
Extrait de l'aide en ligne : "TObjectList contrôle la mémoire de ses objets, libérant un objet lorsque son indice est réaffecté".
Pour supprimer un élément de la liste, utilises la méthode Delete(Index : Integer);


May Delphi be with you


-------------------------------
Réponse au message :
-------------------------------

> Non, en fait, je veux elever un objet de la liste à partir d'un index donné(c'est mieux mais pas obligatoire)et ensuite réatribuer un autre objet a ce meme index dans la liste
>
> Dans le cas où cet index est 0 et que l'élément à supprimer est le seul de la liste, j'essaie .free (suivi de :=nil et .create) ou .clear sur l'objectList.
> Lorsque ensuite, je veux ajouter un objet dans la liste (une formGraph donc), c'est OK mais je ne peux plus fermer cette fenetre. (c'est sur la procedure close que je réiniialise la liste)
>
> Ce que je t'ai donné n'était pas approprié, il est vrai que j'ai du mal à voir d'ou vient le probleme du coup, je m'emmele un peu les pinceaux, j'en suis desole. En y allant pas à pas, il semble que cela vienne des appels à free ou clear.
>
> j'espere que j'ai été plus clair et espere que tu pourras m'aider
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Qu'entends-tu par "je n'arrive pas à réécrire par dessus après" ?
> > Si ton TObjectList est détruit (après un appel à Free), comment veux-tu réécrire dessus puisqu'il n'existe plus ?
> >
> > Si j'ai mal compris ta question, dis le moi.
> >
> > May Delphi be with you
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Merci pour ton aide
> > > J'ai finalement choisi d'utiliser une TObjectList car j'avais vraiment besoin d'un index qui correspond et à une feuille et à un autre élément.
> > >
> > > J'ai une autre question :
> > >
> > > je n'arrive pas à libérer la mémoire du tobjectlist de maniere à pouvoir reecrire par dessus
> > > J'ai essayé
> > > someObjList.free;
> > > someObjList:=nil;
> > >
> > > for i:=0 to x
> > > someObjList.delete(i);
> > >
> > > someObjList.clear;
> > >
> > > mais je n'arrive vraiment pas à réécrire par dessus apres.
> > >
> > > Merci encore
> > >
> > >
> > >
>


Cette discussion est classée dans : form, partir, tableau, crée, identifier


Répondre à ce message

Sujets en rapport avec ce message

création de tableau dans word a partir de delphi 6 [ par cedkat ] bonjour,je voudrais pouvoir inserer un tableau puis le remplir dans word à partir d'un pilotage delphi 6.merci. Aide urgente sur la création à la volée [ par rindra ] Voila, j'aurai une question de débutant à poser :kan je lance delphi, g une form qui est crée automatiquement, c'est comme ça chez tout le monde norma comment pourais-je crée tedit a partir button [ par liquid7snake ] slt je suis un débutant svp aider moi ,je veux crée ou affiché dans ma form1 un edit a partir d'un button ou crée un button dans form1 a partir d'un b remplire un tableau word à partir d'un fichier DBF [ par unescorpionne ] Bonjour ! je ne sais pas comment faire pour créer pui remplir un tableau dans le word à partir d'un fichier *.DBF est ce que vous pouvez m'aider c'e tableau d'image dynamiquement crée [ par ludo1244 ] bonjour ! je cherche de l'aide pour mon programme j'essaye de crée des image dynamiquement et de ensuite les mettre dans un tableau! est-ce que quelq Comment insérer une image dans une base PostgreSQL 8.4 à partir de Delphi 7 [ par agboka8 ] Salut Je cherche les paramètres (code dans le formulaire Delphi et le type de champ de la table dans PostgreSQL) d'insertion d'une image dans une base Problème cellule dans tableau RichEdit [ par H60 ] Bonjour à tous L'un d'entre vous pourrait-il me dire de quelle façon je dois procéder, pour que, lorsque le texte est plus grandque ma cellule de mon "Appel" qui plante et "filtrage" qui bloque!!! [ par leader2000 ] Salut! J'ai une table a deux colonne: "Date" et "conte" J'aimerai faire appel à un autre form après avoir introduit un chiffre dans ma colonne "conte Récupérer les valeurs de composants d'une form crée dynamiquement [ par L_art_ment ] Messieurs dames, bien le bonjour ! Ca faisait si longtemps que je n'étais pas venu poser une questin sur le forum (et oui je commence à me débrouille


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales