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

Delphi Discussion :

Activer le bouton appliquer après modification


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Par défaut Activer le bouton appliquer après modification
    Bonjour à tous

    J'ai une Form avec un PageControl et plusieurs onglets. Je désirerais faire comme les propriétés système (clique droit sur poste de travail => propriétés) càd lorsque que je modifie quoique se soit sur ma form le bouton "Appliquer" est accessible.

    Je pense qu'il doit y avoir une solution plus approprié que de contrôler le "OnChange" de chaque composant...

    Merci de vos réponse...

  2. #2
    Membre confirmé Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Par défaut
    Je ne vois pas trop d'autres solutions que de tester les "OnChange" des divers composants mais moi personnellement je gererais ca plutot de manière plus classique avec des variables globales :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button_ok: TButton;
        Button_appliquer: TButton;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
        procedure Button_appliquerClick(Sender: TObject);
        procedure Button_okClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      param_modifie:boolean;
      nom_temp,nom:string;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      param_modifie:=false;
      button_appliquer.Enabled:=false;
    end;
     
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key=#13 then
      begin
        nom_temp:=edit1.Text;
        param_modifie:=true;
        button_appliquer.Enabled:=param_modifie;
      end;
    end;
     
    procedure TForm1.Button_appliquerClick(Sender: TObject);
    begin
        nom:=nom_temp;
        param_modifie:=false;
        button_appliquer.Enabled:=param_modifie;
    end;
     
    procedure TForm1.Button_okClick(Sender: TObject);
    begin
       nom:=nom_temp;
       param_modifie:=false;
     
    end;
     
    end.

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Par défaut
    Tu peux tout simplement créer une propriété qui te permet de rendre actif ton bouton appliquer dès qu'une modification est effectuée:

    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
     
    type
      TForm2 = class(TForm)
        ...
        btnApply: TButton; //mettre un TButton sur la fiche. Mettre Enable à false dans l'inspecteur d'objets
        procedure btnApplyClick(Sender: TObject);
        procedure Edit1Change(Sender: TObject); //Mettre un Tedit
        procedure ComboBox1Change(Sender: TObject); //Mettre un TCombobox 
      private
        FformModified: boolean;
        procedure SetformModified(const Value: boolean);
        { Déclarations privées }
      public
        { Déclarations publiques }
        property formModified:boolean read FformModified write SetformModified;
      end;
     
    ...
     
    implementation
    ...
     
    procedure TForm2.SetformModified(const Value: boolean);
    begin
      FformModified := Value;
      // rend le bouton apply actif
      btnApply.Enabled := Value;
    end;
     
    procedure TForm2.btnApplyClick(Sender: TObject);
    begin
      // Rendre le bouton bApply Inactif
      btnApply.Enabled := false;
      //Traitement liés au bouton Apply
    end;
     
     
    //Pour les événements onChange du TEdit et du TComboBox
     
    procedure TForm2.ComboBox1Change(Sender: TObject);
    begin
      formModified := true;
    end;
     
    procedure TForm2.Edit1Change(Sender: TObject);
    begin
      formModified := true;
    end;
    Cordialement

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    Tu peut meme assigner dynamiquement
    une methode perso (par exemple : onevtchange) a chaque evenement onchange des compoments de ta forme
    voir meme sur le onexit

    @+ Phil

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Personnellement, je ferais une classe qui contient tous les paramètres et dès qu'il y en a un qui change, cette classe déclenche un évènement OnChange qui va agir sur l'état du bouton
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Par défaut
    à tous pour vos réponses,

    Pedro pourrais-tu m'en dire un peu plus... je ne métrise pas très bien les classes...

Discussions similaires

  1. [XL-2007] Macro activé après modification de cellule
    Par neoinfo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/05/2013, 21h36
  2. Réponses: 1
    Dernier message: 19/10/2011, 00h52
  3. Temps d'attente après selection du bouton Appliquer
    Par nidhal fekih dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/09/2010, 22h49
  4. Réponses: 1
    Dernier message: 05/06/2009, 13h18
  5. Réponses: 5
    Dernier message: 19/08/2005, 17h32

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