C++ Builder et saisie de données dynamique

C++ Builder et saisie de données dynamique - C++ - Programmation

Marsh Posté le 19-07-2004 à 09:22:50    

Bonjour à tous,
Je programme avec C++ Builder et j'aimerais que dans une fonction, mon programme ouvre une fenêtre graphique me permettant de récupérer deux dates et d'utiliser ces dates dans la suite de ma fonction.
Quelqu'un peut-il m'aider à programmer ceci car j'avoue que je suis un peu perdue...
Merci d'avance.
Lucie
 

Reply

Marsh Posté le 19-07-2004 à 09:22:50   

Reply

Marsh Posté le 19-07-2004 à 09:38:49    

http://cplusplus.com/ref/ctime/time.html
http://cplusplus.com/ref/ctime/gmtime.html


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 09:44:20    

En fait, je voudrais saisir les dates dans une fenêtre.
afin que lorsque je lance l'exécutable, une fenêtre souvre avec écrit: "saisir les dates" et ensuite utiliser ces deux dates dans ma fonction.
Est-ce que je peux ajouter la programmation de ma fenêtre dans ma fonction?
je suis désolée mais je suis un peu perdue.
 

Reply

Marsh Posté le 19-07-2004 à 09:46:25    

Voilà la fonction dans laquelle je voudrais ajouter l'ouverture de ma fenêtre et je voudrais utiliser les dates saisie dans la fonction:getImmCONFCLFRequest() par la suite
 
 
void __fastcall ThreadScrutation::scrutConfClf()
{
 
try
{
    TDateTime dt = TDateTime::CurrentTime();
    if (dt < Parameter::getInstance().getCONFCLFBeginScrut() || dt > Parameter::getInstance().getCONFCLFEndScrut())
        return;
 
    TQuery *qr = NULL;
    String strTransMode, strTipe;
 
    try
    {
        qr = DataModuleScrutation->getImmCONFCLFRequest();
 
        if(NULL == qr)
            return;
        qr->First();
 
        while (!qr->Eof)
        {
            ExtractTableConfClf * ext = NULL;
 
 
            strTransMode = qr->FieldByName("transmode" )->AsString;
            strTipe = qr->FieldByName("Tipe" )->AsString;
            if( (strTransMode == "N" || strTransMode == "M" ) &&
                ( strTipe == "CONF" || strTipe == "DEVIS" ) )
            {
                ext =  new ExtractTableConfClf(BON_CONF_SEJOUR);
            }else
            if( strTransMode == "M"  && strTipe == "ANNUL" )
            {
                ext =  new ExtractTableConfClf(RELEVE_FRAIS_ANNUL);
            }
 
            if(NULL != ext)
            {
                ext->init(qr);
 
                if(!QueueProd::getInstance().isExist(ext))
                    QueueProd::getInstance().add(ext);
            }
             
            qr->Next();
        }
 
    }
    __finally
    {
        qr->Close();
    }
 
    if( dt < Parameter::getInstance().getCONFCLFBatchScrut())
        return;
 
    qr = NULL;
 
    try
    {
        qr = DataModuleScrutation->getBatchCONFCLFRequest();
 
        if(NULL == qr)
            return;
        qr->First();
        while (!qr->Eof)
        {
            ExtractTableConfClf * ext = NULL;
 
 
            strTransMode = qr->FieldByName("TransMode" )->AsString;
            strTipe = qr->FieldByName("tipe" )->AsString;
            if( (strTransMode == "N" || strTransMode == "M" ) &&
                ( strTipe == "CONF" || strTipe == "DEVIS" ) )
            {
                ext =  new ExtractTableConfClf(BON_CONF_SEJOUR);
            }else
            if( strTransMode == "M"  && strTipe == "ANNUL" )
            {
                ext =  new ExtractTableConfClf(RELEVE_FRAIS_ANNUL);
            }
 
            if(NULL != ext)
            {
                ext->init(qr);
 
                if(!QueueProd::getInstance().isExist(ext))
                    QueueProd::getInstance().add(ext);
            }
             
            qr->Next();
        }
    }
    __finally
    {
        qr->Close();
    }
}
catch(Exception & e)
{
 
  m_strError = "Erreur dans l'intérrogation de la table CONFCLF : " + e.Message;
  Synchronize(launchError);
}
 
}

Reply

Marsh Posté le 19-07-2004 à 09:48:47    

c'est pas un problème de date alors...
 
tu instancies au démarrage de l'applic une 2ème Form que tu caches (ou mieux, tu instancies quand tu as besoin)
 
pour récupérer les date, tu peux utiliser une fonction publique de Form1 qui va valoriser ces 2 variables.  
 
Finalement, tu détruits Form2


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 09:51:33    

je vois pas trop comment faire ça...
en fait, je veux dire à mon programme :ouvre une fenêtre où je saisie deux dates!! (je suis un peu naive...)
je connais pas trop c++ builder pour la programmation graphique...

Reply

Marsh Posté le 19-07-2004 à 10:04:19    

est-ce que je peux instancier le 2ème form dans ma fonction? et comment faire cela?

Reply

Marsh Posté le 19-07-2004 à 10:05:52    

oui tu peux.
 
ben. tu fais un new form, .parent =this (form1 donc) et un visible = true


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 10:13:06    

je suis désolée...
est-ce que tu peux me dire ce que je dois faire exactement...
Il faut quand même que je fasse une nouvelle fiche?
Ou alors, je peux simplement ecrire l'instancification?
Comment donner les caractéristiques de ma fenêtre : taille, écrire ce que je veux dedans?
merci ...
je suis un peu un gros boulet là...
 

Reply

Marsh Posté le 19-07-2004 à 10:15:32    

Peux-tu me montrer comment coder ça dans ma fonction s'il-te-plait?

Reply

Marsh Posté le 19-07-2004 à 10:15:32   

Reply

Marsh Posté le 19-07-2004 à 10:47:35    

je te l'ai expliqué mais j'ai pas Borland C++ Builder sous la main là. De toute façon, je vais pas te coder ce truc (ça te rendrait pas service)
 
tu dois créer une form avec les boutons et tout, que tu instancies et caches au chargement de la première


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 11:06:37    

Si je comprends
Je crée ma fiche avec mes bouton.
Elle d'appelle form 2  
Je la rends invisible au début. (peux-tu juste me dire comment faire stp)
ensuite, dans ma fonction, ej l'instancifie.
elle apparaîtra donc...
=> je la rend visible.
et après, je la ferme à la fin de ma fonction.
merci.

Reply

Marsh Posté le 19-07-2004 à 11:09:23    

luciesene a écrit :

Si je comprends
Je crée ma fiche avec mes bouton.
Elle d'appelle form 2  
Je la rends invisible au début. (peux-tu juste me dire comment faire stp)
ensuite, dans ma fonction, ej l'instancifie.
elle apparaîtra donc...
=> je la rend visible.
et après, je la ferme à la fin de ma fonction.
merci.


soit tu l'instancie (new) au début et que tu la caches (visible=true|false)
 
soit tu l'instancie à la demande.
 
essaie la première version, plus simple au début


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 11:10:26    

Ok merci, j'essaye au début.

Reply

Marsh Posté le 19-07-2004 à 11:21:58    

j'ai créé ma fiche :  
class TForm2 : public TForm
{
__published: // Composants gérés par l'EDI
        TLabel *Label1;
        TEdit *Edit1;
        TEdit *Edit2;
        TLabel *Label2;
        TLabel *Label3;
        TButton *Button1;
private: // Déclarations de l'utilisateur
public:  // Déclarations de l'utilisateur
        __fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
 
Je la déclare maintenant dans ma fonction?
c'est ça?
 
 

Reply

Marsh Posté le 19-07-2004 à 12:02:42    

Je n'arrive pas à la déclarer.
faut-il que je rajoute des librairies?

Reply

Marsh Posté le 19-07-2004 à 12:06:03    

JagStang a écrit :

et que tu la caches (visible=true|false)


 
ShowModal plutôt, pour que la fonction attende que l'utilisateur ait refermé la seconde fenêtre avant de continuer


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-07-2004 à 12:10:34    

Je suis pénible mais je suis perdue.
comment faire pour que ma deuxième s'affiche dans la fonction que j'ai mise plus haut?

Reply

Marsh Posté le 19-07-2004 à 14:30:12    

J'ai à nouveau une question,
Quelle est la différence entre les fiches et les cadres de C++ Builder?
pour que l'utilisateur de l'application saississe deux dates, il vaut miuex utiliser une fiche ou un cadre?
merci,
lucie

Reply

Marsh Posté le 19-07-2004 à 14:37:44    

Un cadre (frame) sert à faire un genre de morceau de fenêtre réutilisable que l'on peut mettre sur plusieurs fenêtres (fenêtre = form/fiche).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-07-2004 à 14:40:43    

ok donc vaut mieux utiliser une fiche alors.

Reply

Marsh Posté le 19-07-2004 à 14:53:45    

J'aimerais que l'utilisateur rentre deux dates que j'utiliserais dans la suite du programme.
Est ce que je dois déclarer les dates au niveau de la fiche?

Reply

Marsh Posté le 19-07-2004 à 14:57:23    

Tu fais une nouvelle fiche où tu mets deux TDateTimePicker, et deux boutons. Pour le bouton OK tu mets ModalResult à mrOK et le bouton Cancel tu mets ModalResult à mrCancel.
 
puis tu fais dans ta fonction :
 
if(Form2->ShowModal()==mrOK)
{
  // l'utilisateur a cliqué OK après
  // avoir choisi les dates, alors on continue
  date1 = Form2->DateTimePicker1->Date;
  date2 = Form2->DateTimePicker2->Date;
  // la suite de ton traitement
}
 
où date1 et date2 sont déclarés comme des TDateTime (à toi ensuite de voir si tu dois les convertir en un autre format de date)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-07-2004 à 14:59:44    

je vais essayer ça!!
merci beaucoup, ça va bien m'aider je pense!!

Reply

Marsh Posté le 19-07-2004 à 16:16:08    

merci beaucoup!!
ça m'a bien fait avancer!!!

Reply

Marsh Posté le 19-07-2004 à 16:48:17    

je reviens sur l'exécution de mon programme :  
je crée un exécutable mais mon problème est que mon programme ne s'éxécute qu'une seule fois au premier clic sur le bouton.
si je veux lancer une deuxième fois le programme, je dois fermer ma fenêtre et relancer l'éxécutable...
 
Auriez vous une idée sur la cause?
 
merci encore

Reply

Marsh Posté le 19-07-2004 à 16:49:00    

quel bouton ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-07-2004 à 16:51:16    

le bouton de ma première fiche.
je rentre aussi les dates à ce niveau.
je lance ensuite tout mon programme( c'est un extracteur de données)
mais quand il a fini et que je change les dates, il ne fait rien...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed