Bonjour,
j'ai créé un composant hérité de TComponent et il fonctionne nickel.
Ce compo a un module d'édition spécifique enregistré avec RegisterPropertyEditor en [paDialog].
Pour finir, j'utilise DefineProperties(Filer: TFiler); pour sauvegarder le tout dans le dfm (cf http://delphi.developpez.com/faq/?pa...ableauxdansdfm ).
Tout pourrait être merveilleux mais lorsqu'en Design j'utilise le dialogue pour faire des modifications et que je referme le form et l'unité, Delphi7 ne me demande pas d'enregistrer, donc si j'oublie les modifications se perdent.
Y aurait-il un moyen de dire à l'EDI que l'un des composants du form vient d'être modifié et doit provoquer l'enregistrement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 TDesignXYZ = type string; TDesignXYZProperty = class(TStringProperty) public function GetAttributes: TPropertyAttributes; override; procedure Edit; override; end; TKxXYZ = class(TComponent) private FAboutMBT : string; FList : TObjectList; ... FDesignXYZ : TDesignXYZ; // Edit Property FDialDesign : TDesignXYZForm; // Design Form FDialParams : TExecXYZForm; // Exec params Form FINIFile : string; FEvtSetup : TNotifyEvent; // Lecture / Ecriture de FList dans le .dfm procedure WriteStrData(Writer: TWriter); procedure ReadStrData(Reader: TReader); // procedure SetDesignXYZ(const Value: TDesignXYZ); procedure SetAbout(const Value: string); procedure DialDesignClose(Sender: TObject; var Action: TCloseAction); function GetOwnerFormName: string; procedure DialParamsClose(Sender: TObject; var Action: TCloseAction); protected procedure Loaded; override; procedure ReadINI; // automatique lors de chaque démarrage de l'exe procedure WriteINI; // automatique lors de chaque fermeture de l'exe procedure DefineProperties(Filer: TFiler); override; // Lecture / Ecriture interne de FList public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure ExecDialParam; published property AboutMBT : string read FAboutMBT write SetAbout; property INIFile : string read FINIFile write FINIFile; property XYZ : TDesignXYZ read FDesignXYZ write SetDesignXYZ; property OnSetup : TNotifyEvent read FEvtSetup write FEvtSetup; end; procedure Register; implementation procedure Register; begin RegisterPropertyEditor(TypeInfo(TDesignXYZ), nil, '', TDesignXYZProperty); RegisterComponents('MBT Tools', [TKxXYZ]); end;
Partager