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.
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.
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
Form1 est la première forme ajouter a l'application, c'est la forme maitre
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;
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.
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 ?
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
Envoyé par dz_bill
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
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 .
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
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).
+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
voila le code de base a moduler
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;
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):
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 .
En est tu sur ?Envoyé par aityahia
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 SelfEnvoyé par Clorish
Code : Sélectionner tout - Visualiser dans une fenêtre à part MyForm1 := TMyForm.Create(MyForm1 );
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 :Envoyé par Clorish
Donc sans MainForm, pas d'application sans gérer sois même une boucle de message dans le dpr
Code : Sélectionner tout - Visualiser dans une fenêtre à part if FMainForm <> nil then
Birdyz
Pas forcementEnvoyé par birdyz
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.Envoyé par Clorish
Alors il y a peux être une subtilité, mais je l'ai pas vu.
Birdyz
Oui, je ne remettais pas en cause ces faitEnvoyé par birdyz
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager