begin process at 2010 02 10 08:14:34
  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 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 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 Remplir un record à partir d'une table [ par ikremnitz ] Bonjour, j'ai d'un coté un record TMonRecord = record Champ1 : string; Champ2 : string; ... et de l'autre un table avec au mois ces 2 donné Tableau dynamique [ par jderf ] Bonjour, J'avais une procedure dans laquelle j'utilisait la fonction FillChar avec un tableau statique. J'ai modifié cette procedure, pour avoir un t 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 Exécuter des traitements VB6 sous Delphi7 [ par toutoughou ] Bonjour; Dans mon form Delphi j'ai un bouton et je veux au clic sur ce bouton exécuter un form dans une autre application VB ,ce form a un ensemble de une form que je voudrais utiliser dans 2 packages différents [ par MAURICIO ] Salut à tous, voilà, je suis en rain de créer un 2ème package de compos qui seront basés sur le compo ActiveX TWebBrowser et qui peut être télécharg Form en alpha avec PNG [ par JulioDelphi ] hello je cherche a faire une form avec canal alpha avec une image .png avec un morceau de code d'une splashform j'ai obtenu quelquechose de proche mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 20,358 sec (3)

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