Propriete published d'une frame

Signaler
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
Guillemouze
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
Salut tout le monde,
je voudrais savoir si il est possible de mettre des proprietes published dans une frame.

Ma classe ressemble à ca :

TMaFrame = class(TFrame)
published
    property OnMonEvent: TNotifyEvent read FOnMonEvent write FOnMonEvent;
    property MaProp: Boolean read FMaProp write FMaProp;
end;

mais rien ne s'ajoute dans l'inspecteur de proprietes.

Avez vous une idée si c'est possible de le faire

merci

4 réponses

Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
ou sont les elements privates fOnMonEvent et fMaProp ?
TFrame est bien un descendant de TComponent ou TPersistent ?
as tu bien recompiler ton composant aprés (modifier et sauvegarder ne suffit pas) ?
ton composant est bien installé dans la palette (donc procedure Register presente dans l'unité) ?
il faut parfois redemarrer Delphi pour que les modif apparaisse (rare mais ça arrive)
il faut par contre toujours réouvrir le projet pour voir les modif (et ça evite les plantage de l'IDE)

<hr size="2" width="100%" />
http://deefaze.gnomz.com
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
>ou sont les elements privates fOnMonEvent et fMaProp ?
Ils y sont, c'etait juste un apercu de structure

>TFrame est bien un descendant de TComponent ou TPersistent ?
TFrame est la classe de la VCL definie dans l'unité Forms

>as tu bien recompiler ton composant aprés (modifier et sauvegarder ne suffit pas) ?
ce n'est pas un composant, c'est peut etre ca le probleme, c'est juste une frame créé dans mon projet
uses
    TMaFrame in 'UMaFrame.pas'{MaFrame: TFrame};
puis ajoutée dans une form grace au bouton 'cadre' de la palette d'outils

>ton composant est bien installé dans la palette (donc procedure Register presente dans l'unité) ?
oui il apparait dans l'onglet "modeles" (apres un click droit => "ajouter a la palette" sur la frame).
ca doit etre equivalent à un register?

>il faut parfois redemarrer Delphi pour que les modif apparaisse (rare mais ça arrive)
redemarré plusieurs fois
>il faut par contre toujours réouvrir le projet pour voir les modif (et ça evite les plantage de l'IDE)
idem
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
hum .... alors nous avont un composant (modele de composant, c'est un peu different) qui refuse de publier des propriétés dans l'inspecteur alors que tout est normal et bien fait apparement.

descendant de TFrame qui lui est un bien un descendant de TCompo et même de TWinControl.

la propriété fMaProp ... ça a la rigeur on ecarte pour l'instant, mais l'evenement lui ... logiquement un evenement passe a coups sur ... surtout qu'il est bien ecrit, donc ... donc ... donc ...

reste un truc auquel j'ai pas pensé a te preciser :

quand on modifie un composant, il faut parfois l'enlever de la fiche puis le remettre sur la fiche.
si il est créé dynamiquement c'est sur qu'il n'apparaitra jamais dans l'inspecteur d'objet, mais ça n'as pas l'air d'etre le cas.
ensuite viens le probleme du DFM, qui lui contient des trucs ... plus ou moins utiles ... qui peuvent parfois devenir trés grincheux quand on elabore un composant en même temps que sont appli . le developpeur de composant travail logiquement a l'aveuglette c'est pas banal hein ? enfin pendant l'ebauche (l'elaboration quoi).

mmm.

faudrait d'autre details ... appel de l'objet, modification réelle de l'objet ... etc.
je vais manger la ... ça te laisse mmm ... 10 minutes.

<hr size="2" width="100%" />
http://deefaze.gnomz.com
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
bah dis donc tu mange avec les poules foxi

voici le code complet du test :

Project1.dpr
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  TestFrameProperty in 'TestFrameProperty.pas' {Frame3: TFrame};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Unit1.pas
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TestFrameProperty;

type
  TForm1 = class(TForm)
    TFrame31: TFrame3;
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
 
TestFrameProperty.pas
unit TestFrameProperty;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TFrame3 = class(TFrame)
  private
    FMyProperty: Boolean;
    FMyEvent: TNotifyEvent;
    { Déclarations privées }
  public
    { Déclarations publiques }
  published
    property MyEvent: TNotifyEvent read FMyEvent write FMyEvent;
    property MyProperty: Boolean read FMyProperty write FMyProperty;
  end;

implementation

{$R *.dfm}

end.

ce que j'ai fait :
 - cree la frame avec les properties,
 - click-droit => ajouter a la palette (enregistré en meme temps l'unite)
 - tout fermer
 - nouveau => application
 - insertion de la frame sur la form (a partir de la palette)
 - et la ... rien .. ni l'event ni la propriete ne sont visible !!!

je pense que je m'y prend mal, la création d'une frame avec des properties doit peut etre se faire differement !