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 :

Définir une form principale par programme


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Définir une form principale par programme
    salut tous le monde. Comme il est indiquer dans le titre quelque‘un peut me dire comment définie une form[i] comme une form principale par programme c-ta-dir quel est la commande qui permis de faire ça.
    merci a vous.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Prenez un exemple;
    1 application Project1
    Avec 5 formes (de forme1 à forme5).
    form1 est la forme maitre.

    Visualiser l'unité Project1.dpr

    Vous avez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.CreateForm(TForm4, Form4);
      Application.CreateForm(TForm5, Form5);
      Application.Run;
    Form1 est la première forme ajouter a l'application, c'est la forme maitre
    Les autres formes sont autocréer, autrememnt elle ne serait pas la.

    Avec le même jeux d'essai essayer de modifier les propriété de l'application puis regarder les modification dans le code.

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    tu peux y acceder aussi par les options de projet mais le resultat et le meme.
    La premiere form cree est la form principale.

    Je suppose que c'est encore pour faire des splashscreen ?

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    marci pour votre aide mais c'est pas claire encore .je sais que la premiere form créer est la form principale par défaut et en peut difinire une autre form comme form principale par le menu projet la commande options.
    mais moi je veut savoir comment peut-en le faire pa programation.
    merci a vous

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par dz_bill
    mais moi je veut savoir comment peut-en le faire pa programation.
    merci a vous

    Ben en faisant en sorte que la premiere form qui sera cree quand ton applciation est lancée, soit celle que tu souhaite etre principale.


    Mais quel est l'origine de ce probleme .. souvent, la solution n'est pas liée au probleme, mais lié au resultat que l'on souhaite

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    ok je vais esseyer d'être plus claire
    j'ai créer une application gestion de stock .la form1 est la form principale par défaut. dans le menu options y a le sous menu gestionnaire de mot de passe.
    le gestionnaire de mot de passe permet a l'utilisateur de créer un mot de passe pour mieux protéger l'application.
    si l'utilisateur créera un mot de passe quand il relance l'application avant et l'exécution de la fom1.une boite de dialogue doit être exécuter pour permettre a
    l'utilisateur de saisir le mot de passe. Alors après la création de mot de passe la form principale devienne la boite de dialogue .

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Salut

    Il me semble que tu ne peux pas mettre la fenetre de demande de mot de passe comme form principale de ton application tout simplement parce que la fermeture de la fenetre principale d'une application ferme l'application.
    Je pense que le mieux est de garder ta fenetre principale actuelle, et sur le FormShow, si un mot de passe est définit, tu ouvre ta fenetre de demande de mot de passe en ShowModal. Ensuite, en fonction du ModalResult envoyé, tu peux faire un close pour fermer l'application, ou rien du tout et ton appli continura normalement.

    Birdyz

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    merci l'ami je ne suis pas obliger de fermer la boite de dialogue après la saisie de mot de passe il suffi juste de la cacher.
    si le mot de passe est juste alors form1.hide (cacher la form1)et foem2.show(faire apparaître la 2em form).

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    +1 BirDyz
    -1 pour dz_bill
    on voyant ton post je m'attend pas un problèmes de login une petit recherche sur le forum et tu trouvera des solutions.

    PS: ton password et stocker

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    begin
    Application.initialize;
    Application.Showmainform(False); // n'affiche pas la fenetre principale
    Application.CreateForm(Tform1, Form1); // fenetre principale
    Application.CreateForm(TfmLogin, fmlogin);  //fenetre de saisie login/pwd
    If loginneeded then fmLogin.showmodal;  // demande login si necessaire
    form1.showmodal; // affichage de la fenetre principale
    End;
    voila le code de base a moduler

  11. #11
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    on créant ta forme de la manière suivante même si elle est la première elle ne sera jamais considéré comme principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyForm1 := TMyForm.Create(Self):

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    merci a vous tous et spécialement BirDyz j'aurais du poncer a sa avant de poster le problème mais c'est pas grave en est la pour apprendre
    bon courage a tous le monde et long vie au forum .

  13. #13
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par aityahia
    on créant ta forme de la manière suivante même si elle est la première elle ne sera jamais considéré comme principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyForm1 := TMyForm.Create(Self):
    En est tu sur ?
    Car il me semble que ce n'est pas le cas ...
    L'affectation en tant que fenetre principale est lié au constructeur.
    Enfin, je dit ca de memoire, car je n'ai malheureusement pas le temps de tester .... mais a verifier quand meme.

  14. #14
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par Clorish
    En est tu sur ?
    Car il me semble que ce n'est pas le cas ...
    L'affectation en tant que fenetre principale est lié au constructeur.
    Enfin, je dit ca de memoire, car je n'ai malheureusement pas le temps de tester .... mais a verifier quand meme.
    je viens de faire le test sa marche il faut juste ôté le Self

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyForm1 := TMyForm.Create(MyForm1 );
    Fichiers attachés Fichiers attachés

  15. #15
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    ok, merci
    C'est toujours bon a savoir.

    Par contre a y reflechir, c'est vrai qu'une fois jai voulu me passer des appels a Application.CreateForm dont on m'avait dit que cela n'etait pas propre et j'ai eu effectivement le soucis de voir mon programme terminé avant meme de commencer.
    N'ayant pas de fenetre principales reconnue en tant que telles, l'application ferait mon programme sans l'avoir demarré

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Clorish
    ok, merci
    C'est toujours bon a savoir.

    Par contre a y reflechir, c'est vrai qu'une fois jai voulu me passer des appels a Application.CreateForm dont on m'avait dit que cela n'etait pas propre et j'ai eu effectivement le soucis de voir mon programme terminé avant meme de commencer.
    N'ayant pas de fenetre principales reconnue en tant que telles, l'application ferait mon programme sans l'avoir demarré
    C'est logique. Le membre FMainForm de la classe TApplication est affecté lors du premier appel à CreateForm. Donc si pas d'appel à CreateForm, FMainForm reste à nil. Et si on regarde le code de la méthode Run (toujours dans la classe TApplication), il y a une belle condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if FMainForm <> nil then
    Donc sans MainForm, pas d'application sans gérer sois même une boucle de message dans le dpr

    Birdyz

  17. #17
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par birdyz
    C'est logique.
    Pas forcement
    La liste des components et des controls des objets TCompoent et TControls sotn affecté et mis a jour lors de l'appel au constructeur Create

    Il etait possible que l'appel au constructeur des Tform interagisse avec le Tapplication cree d'office lors de l'execution de l'application

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Clorish
    Pas forcement
    La liste des components et des controls des objets TCompoent et TControls sotn affecté et mis a jour lors de l'appel au constructeur Create

    Il etait possible que l'appel au constructeur des Tform interagisse avec le Tapplication cree d'office lors de l'execution de l'application
    J'ai pas vraiment creuser, mais une chose est sur, la property MainForm est en lecture seule, et dans la classe TApplication, son membre privé est soit mis à nil, soit affecté dans la méthode CreateForm. De plus CreateForm n'est pas appelé par le constructeur de TCustomForm.
    Alors il y a peux être une subtilité, mais je l'ai pas vu.

    Birdyz

  19. #19
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par birdyz
    J'ai pas vraiment creuser, mais une chose est sur, la property MainForm est en lecture seule, et dans la classe TApplication, son membre privé est soit mis à nil, soit affecté dans la méthode CreateForm. De plus CreateForm n'est pas appelé par le constructeur de TCustomForm.
    Alors il y a peux être une subtilité, mais je l'ai pas vu.

    Birdyz
    Oui, je ne remettais pas en cause ces fait
    D'ailleur cela rejoint certains effets que j'ai remarqué auparavant.

    J'ai juste precisé que ce qui parait effectivement logique, ne l'est pas forcement, Delphi gerant de maniere differente d'autres classes de sa VCL.

Discussions similaires

  1. [WD] Détecte une mise à jour par programmation
    Par hegros dans le forum WinDev
    Réponses: 11
    Dernier message: 26/03/2007, 15h29
  2. Intégrer une Form dans une Form principale
    Par rol72 dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/09/2006, 14h20
  3. [WD10] Changer l'adresse IP d'une base HF par programmation
    Par routmout dans le forum WinDev
    Réponses: 1
    Dernier message: 20/06/2006, 20h01
  4. onchange d'une zone remplie par programmation
    Par japz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/05/2006, 13h58
  5. [Interbase]Comment créer une source ODBC par programme ?
    Par touhami dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/03/2006, 16h40

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