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

C++Builder Discussion :

Faire un boulot après avoir été mis en icône [Débutant]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut Faire un boulot après avoir été mis en icône
    Le problème: Je veux faire un (et un seul) update quelconque après avoir été mis en icône et remis en fenêtre. La seule solution fiable que j'ai trouvé jusqu'à présent, c'est de mettre un timer qui détecte une transition de mode:

    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
     
    void __fastcall TfrmMain::Timer1Timer(TObject *Sender)
    {
      static bool refreshDone = false ;
     
      if (IsIconic(this->Handle))
         refreshDone = false ;
      else
        {
          if (!refreshDone)
            {
              UpdateListProcs() ;
              refreshDone = true ;
            }
        }
    }
    Vous avez une solution plus simple qui n'utiliserait pas un timer?

    Merci!

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut
    Il est possible d'utiliser les fonctions avancées de la VCL
    Object : Tapplication;
    object :TCustomApplicationEvents
    *

    l'object de type TApplication contient des EventHanlder pour les Evènements OnMinimize et le OnRestore
    Il suffit donc de les réassigner a ta Form

    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
     
     
    // le .h
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <AppEvnts.hpp>  // declaration de la classe AppEvent
    //---------------------------------------------------------------------------
    class TForm73 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    private:	// Déclarations utilisateur
    	  void __fastcall EventHandlerMinimize(TObject *Sender); // Event Handler de OnMinimize
    	  void __fastcall EventHandlerRestore(TObject *Sender);//Event Handler de OnRestore
     
    	  TCustomApplicationEvents* AppEventHandler; // Object de type TCustomApplicationEvents
    public:		// Déclarations utilisateur
    	__fastcall TForm73(TComponent* Owner);
     
    };
     
    //le cpp
     
    __fastcall TForm73::TForm73(TComponent* Owner)
    	: TForm(Owner)
    {
      Application->OnMinimize=EventHandlerMinimize; // assignation de l'event Handler
      Application->OnRestore=EventHandlerRestore; // assignation de l'eventHandler 
      AppEventHandler=dynamic_cast<TCustomApplicationEvents*>(Owner);// récupération  de l'object TCustomApplicationEvents
      AppEventHandler->Activate(); // Activation de l'objet
     
     }
    //---------------------------------------------------------------------------
    void __fastcall TForm73::EventHandlerMinimize(TObject *Sender)
    {
       AppEventHandler->CancelDispatch(); //Empêche les autres objets TCustomApplicationEvents de recevoir l'événement en cours. 
     
       ShowMessage("Minimize");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm73::EventHandlerRestore(TObject *Sender)
    {
      AppEventHandler->CancelDispatch();//Empêche les autres objets TCustomApplicationEvents de recevoir l'événement en cours. 
     
       ShowMessage("Restore");
    }
    et voila
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    Un gros merci DjmSoftware, j'ai implanté ça dans mon code et ça fonctionne très bien.

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

Discussions similaires

  1. Après avoir vu l'excellent film "Home": que faire ?
    Par mamelouk dans le forum Écologie
    Réponses: 94
    Dernier message: 26/04/2012, 18h07
  2. Réponses: 1
    Dernier message: 11/05/2009, 20h33
  3. Réponses: 9
    Dernier message: 05/01/2007, 10h51
  4. Réponses: 5
    Dernier message: 08/12/2006, 18h26
  5. Réponses: 1
    Dernier message: 22/08/2006, 12h07

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