IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Delphi7]Forcer la sauvegarde du dfm


Sujet :

Langage Delphi

  1. #1
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut [Delphi7]Forcer la sauvegarde du dfm
    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;

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    La propriété est marquée en stored? (je n'ai rajouté que des propriétés simples dans les dfm)

    Edit: J'ai dit une bêtise

  3. #3
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    En fait, ce sont les objets de FList que je veux enregistrer dans le dfm.

    Mais je viens de m'en sortir en marquant le module (IOTAModule.MarkModified; ) lors de la sortie de mon dialogue TDesignXYZProperty.Edit;

    Merci ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OpenOffice][Texte] Forcer le chemin de sauvegarde d'un document en modification
    Par lodan dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 11/08/2011, 10h10
  2. Réponses: 2
    Dernier message: 23/07/2009, 14h18
  3. Format de sauvegarde .dfm
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/01/2009, 15h55
  4. Comment forcer la sauvegarde avec Hibernate?
    Par yli_ren dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/05/2008, 14h00
  5. Forcer la sauvegarde d'un nouvel enregistrement
    Par vcattin dans le forum IHM
    Réponses: 2
    Dernier message: 23/02/2007, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo