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

Composants VCL Delphi Discussion :

Onchange simulable avec un TMonthCalendar?


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Onchange simulable avec un TMonthCalendar?
    Bonjour,

    je travaille en D7, et dois convertir des twwDBMonthCalendar en tMonthCalendar.

    Mais voilà, certains de mes TwwDBMonthCalendar ont des évènements onchange, et TMonthCalendar n'a pas cet évènement-là.

    Je cherche une solution à cela, autre que de créer une classe dérivée de TMonthCalendar.

    Y aurait-il moyen de se servir des évènements existant de TMonthCalendar pour faire cela?

    Je travaille en D7

    Merci

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par jkbureau Voir le message
    Bonjour,

    je travaille en D7, et dois convertir des twwDBMonthCalendar en tMonthCalendar.

    Mais voilà, certains de mes TwwDBMonthCalendar ont des évènements onchange, et TMonthCalendar n'a pas cet évènement-là.

    Je cherche une solution à cela, autre que de créer une classe dérivée de TMonthCalendar.

    Y aurait-il moyen de se servir des évènements existant de TMonthCalendar pour faire cela?
    Remplacer les TwwDBMonthCalendar par des TDateTimePicker plutôt que des TMonthCalendar ?
    Le TDateTimePicker possède un événement OnChange et sa partie "déroulée" équivaut au TMonthCalendar...
    Philippe.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    TMonthCalendar est un peu plus compliqué à gérer mais on peut trouver son bonheur dans les API Windows, voici un code que j'ai fait pour aider un collègue pour gérer le click

    J'ai utilisé MCHITTESTINFO pour le TMonthCalendar pour récupérer des zones hors de la grille de calendrier comme la zone des mois comme MCHT_CALENDARDATE ou MCHT_TODAYLINK pour affiner le OnClick

    Voici une version allégée mais tu as déjà pas mal de piste à explorer

    Code c++ : 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
    //---------------------------------------------------------------------------
    void __fastcall T***::MonCalendrierClick(TObject *Sender)
    {
      TMonthCalendar* Cal = ((TMonthCalendar*)Sender);
      bool CalRealClick = false;
      // En Vista, on peut choisir le siècle, la décénie, l'année et le mois.
      // On ne veut mettre à jour que si on séletionne une date, sinon on retarde le traitement
      // au prochain clic sur une date
      if ( ! FCalDelayedClick) // FCalDelayedClick est un membre privé de T***, à false par défaut
      {
        // -> la prise en compte réelle du click du calendrier ne doit pas se faire sur le clic du bandeau de navigation
        MCHITTESTINFO CalClicInfo;
        CalClicInfo.cbSize = sizeof(CalClicInfo);
        CalClicInfo.pt = Cal->ScreenToClient(Mouse->CursorPos);
     
        CalClicInfo.uHit = MCHT_CALENDARDATE ;
        int res = Cal->Perform(MCM_HITTEST,0,(LPARAM)&CalClicInfo);
        if (res != MCHT_CALENDARDATE)
        {
          CalClicInfo.uHit = MCHT_TODAYLINK;
          res = Cal->Perform(MCM_HITTEST,0,(LPARAM)&CalClicInfo);
          if (res == MCHT_TODAYLINK)
            CalRealClick = true;
        }
        else
          CalRealClick = true;
     
        if(CalRealClick)
          FCalDelayedClick = false;
     
        ... Cal->Date ... // ici ton code
     
      }
     
      // Si on veut cacher, on ignore la gestion des vues
      // Gestion du calendrier Vista
      if( ! CalRealClick && CheckWin32Version(6,0))
      {
        // le OnClick se produit après que Windows a pris en compte un changement de vue
        FCalDelayedClick = Cal->Perform(MCM_GETCURRENTVIEW,0,0) != MCMV_MONTH;
      }
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Simuler avec le MLS sur un TM320c6713
    Par merlinerick dans le forum Simulink
    Réponses: 0
    Dernier message: 11/05/2009, 14h27
  2. sauvegarder une simulation avec c#
    Par ing_b dans le forum C#
    Réponses: 4
    Dernier message: 10/04/2009, 11h16
  3. Simulation avec Amesim
    Par Laure fr10 dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/03/2009, 11h13
  4. Simulation avec FlightGear
    Par bibich2604 dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 25/04/2008, 17h54
  5. lancer une simulation avec RMAN
    Par vbcasimir dans le forum Recovery Manager
    Réponses: 3
    Dernier message: 23/01/2007, 15h01

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