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 :

Création d'un calendrier/agenda


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut Création d'un calendrier/agenda
    Bonjour à tous !

    Me revoilà lancé dans une nouvelle fonctionnalité: créer un calendrier / agenda !

    J'ai fais quelques recherches sur le forum et l'idée de bandit boy me plait beaucoup :

    Salut,
    Je me suis développé une appli qui fait calendrier + agenda, et j'ai utilisé un TStringGrid pour représenter toutes les plages horaires d'une journée (par 30mn). Puis pour sauver la date, j'ai utilisé un TDateTime.

    Pour la sauvegarde, j'ai tout enregistré dans une grosse structure sauvegardé en ressource de l'exe.
    http://www.developpez.net/forums/d46...on-calendrier/

    J'aimerai la mettre en application, je possède aussi une base de données sous Access dont je peux me servir.

    Avez-vous des idées sur la méthode la mieux adaptée, la plus simple et comment la mettre en œuvre ?

    Pour l'instant j'ai ça.. (cf voir screen)



    Merci beaucoup

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Quelle est la question?

    Pour réaliser un agenda, tu sauvegarde les infos quelque part (dans ton cas, dans ta base de donnée), et tu affiche les infos adéquat en fonction de la date sélectionnée dans ton calendrier (dans ton cas une simple requete SELECT sur ta table).
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    En fait c'est au niveau de l'organisation ou j'ai du mal,
    comment je présente ça ?

    Avec un TStringGrid ? Sous quelle forme ? Quelle genre de table dois-je créer dans ma bd ? Quelles colonnes ?

    Enfin voilà c'est assez le bazzare dans ma tête et je demande conseil au cas ou une personne l'avait déjà fait et comment elle s'y prendrait ^^

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    A mon avis tu prend les problèmes a l'envers. Lorsque tu développe une application, il faut d'abord établir clairement ce que tu souhaite faire, quelles fonctionnalités tu veux, etc...
    Ensuite vient le moment de la réalisation.

    Mais bon un agenda basique, tu peux créer une nouvelle table, avec au moins 2 champs (pour la date et pour le champ texte).

    Par exemple une table MON_AGENDA composée de deux champs AGENDA_DATE et AGENDA_TEXT.

    Pour ajouter une valeur dans table, une simple requête SQL INSERT (en utilisant un composant TQuery).
    Pour visualiser les informations pour une journée donnée, une simple requête SQL SELECT avec un filtre sur la date (clause WHERE dans ta requête).
    Tu peux utiliser les composants orientés DB pour afficher les infos dans ton application (un TDBGrid avec un TDataSource feront l'affaire).
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Je sais ce que je veux faire, c'est comment le mettre en œuvre qui me bloque,
    je vais t'éclairer :



    - CCalendar : Calendrier, qui lorsque l'on appuie sur un jour de la semaine le TStringGrid affiche cette semaine en question.

    - TStringGrid : Affiche le planning de la semaine
    -> Horizontal : les jours de la semaine
    -> Vertical : les heures
    Dans chaque case la nature du travail que l'ouvrier va devoir effectuer.
    Lorsque l'on clique sur une case le DBGrid s'active.

    - DBGrid : Affiche les informations du client chez qui l'ouvrier doit intervenir.

    Je gère déjà dans ma base de données les dates d'intervention (sans les heures pour l'instant mais je vais l'ajouter) et donc il faut que j'associe la date et heure à mon CCalendar.

    Ca te parait possible ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    tu peux même utiliser un fichier INI


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [date1]       // t'auras donc une liste  clé vers tes dates
    evenement=blabla
    rdv=blabla
    ....
     
    [datei]
    evenement=blabla
    rdv=blabla
    ....


    par la suite tu récupère la liste des évenement ou les rdv en specifiant une date de ton choix!:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnsiString chaine=fichierINI->ReadString(une_date,"evenement',"");

    c'est juste une alternative, mais le mieux c'est d'utiliser une BDD, avec les détail de Sat83.

    Bonne chance.
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  7. #7
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Yop, bon après avoir fais quelques modifications à mon programme je ré-attaque mon idée d'agenda / planning / calendrier ^^

    Alors j'ai déjà une base de mon idée c'est-à-dire :

    Une table de ma base de données nommées : devis_tbl
    contenant :
    - les dates d'interventions sous la forme JJ/MM/AAAA
    - la nature de l'intervention
    - le début de l'intervention (8 -> 18) c'est l'heure en faite
    - la durée de l'intervention

    J'ai mis en fichier joint l'apparence que je souhaite obtenir,
    mais j'arrive pas à établir un lien entre mon calendrier qui va définir dans quelle semaine je suis pour aller chez les informations de la table devis_tbl correspondantes.
    Dans mon planning de la semaine je veux juste afficher la nature de l'intervention, et dès que l'on clique dans cette case cela affiche le reste des informations dans mon DBGrid du bas.

    Quelqu'un a t-il une idée d'un moyen pour mettre ça en œuvre ?

    Merci bcp
    Images attachées Images attachées  

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut je comprends pas ton probleme
    Il suffit d utiliser :

    void __fastcall TForm1::CCalendar1Change(TObject *Sender)
    {
    Memo1->Clear();
    Memo1->Lines->Add(CCalendar1->Day) ;
    Memo1->Lines->Add(CCalendar1->Month) ;
    Memo1->Lines->Add(CCalendar1->Year ) ;
    Memo1->Lines->Add(CCalendar1->CalendarDate ) ;
    Memo1->Lines->Add(CCalendar1->CalendarDate.DayOfWeek() ) ; // 1=dimanche
    }

    Le probleme : tu veux remplir un tableau pour ta semaine ?
    Faire un test sur CCalendar1->CalendarDate.DayOfWeek()
    Et la decrementer pour obtenir La date de Lundi donc 2

    Nouveau souci !! Les changements de mois en pleine semaine


    Apres çà demeure mon avis , mais ce genre d appli du php et du sql , çà le fait tres bien , tu heberges tout en ligne ce qui fait que c est accessible depuis n importe où , egalement pour faire un devis ou sortir une facture chez un client

  9. #9
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    En fait mon but c'est juste de remplir un planning à partir d'une table (devis_tbl),
    j'ai les dates avec les actions correspondantes, mais je galère à gérer le planning de la SEMAINE avec changement de semaine et de mois c'est pas évident -___-

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut
    Sql ?

    Si oui , j ai un code à te filer
    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
     
    TStringList * TempDateAdd   = new TStringList ;
    TStringList * TempDateOrder4DB   = new TStringList ;
     
    TempDateAdd ->Add(CCalendar1->CalendarDate) ;
    int varTestNbJour = CCalendar1->CalendarDate.DayOfWeek();
    for ( int i=1 ; i<=5 ; i++)
        { if ( varTestNbJour-i>=2        )
             { TempDateAdd ->Add(varTestNbJour-i) ;
               TempDateAdd ->Add(IncDay(CCalendar1->CalendarDate,-i)) ;
             }
        }
    for ( int i=-5 ; i<=-1 ; i++)
        { if ( varTestNbJour-i<=6       )
             { TempDateAdd ->Add(varTestNbJour-i) ;
               TempDateAdd ->Add(IncDay(CCalendar1->CalendarDate,-i)) ;
             }
        }
    // ici requete sql pour remplir une table temporairement avec les 5 items de  TempDateAdd
    // requete sql avec un order by pour nourrir un TempDateOrder4DB qui sera correctement agencé
    // requete sql qui boucle de 1 à TempDateOrder4DB->Count pour nourrir une par tes colonnes
    // dans mon cheminement , j ai consideré le WE comme repos

  11. #11
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Oui c'est du sql, je vais examiner ton code car j'ai un peu de mal à le comprendre,
    tu vois mon idéal serait d'obtenir ça :
    http://a6.idata.over-blog.com/0/51/6...empsBulles.gif

    Sans les petites décorations autour

  12. #12
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Bon j'ai un peu réfléchi à mon projet et je vais opter pour une solution plus simple. (Voir le screen en fichier joint)

    J'en appelle à vous, vous qui connaissez bien la programmation pour me donner vos idées pour faire en sorte de récupérer un beau planning de la semaine

    1°) Quelle mise en forme ?

    J'ai mis sur le screen un GBGrid et un StringGrid mais je ne sais lequel choisir pour bien mettre en forme, quel sera le mieux adapté ?

    2°) Quelles champs pour ma table de base de données (Access) ?

    La date de l'intervention au moins (c'est un DateTimePicker), la nature de l'intervention et l'id du client, ensuite de dois jouer sur les heures mais là j'avoue je ne sais pas trop comment faire, ça dépendra de mon choix entre le DBGrid et le StringGrid je suppose..

    Alors des volontaires ?

    Merci d'avance
    Images attachées Images attachées  

  13. #13
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 128
    Points : 44
    Points
    44
    Par défaut
    Personne pour m'aider ?
    Je voudrais juste savoir comment mettre en forme dans un tableau le planning

    Pleeeaaaaaaase Heeelppp...

Discussions similaires

  1. Création d'un calendrier
    Par cheva52 dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/01/2008, 16h36
  2. Création d'un calendrier
    Par CleeM dans le forum Delphi
    Réponses: 10
    Dernier message: 05/06/2007, 16h31
  3. [Dates] Calendrier /agenda et pages liées
    Par craac dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2007, 11h53
  4. Gestions calendrier/agenda, rendez-vous, etc
    Par clincks dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 10/03/2007, 13h12
  5. Réponses: 19
    Dernier message: 10/05/2006, 09h40

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