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 :

Créer un nouveau formulaire en premier plan


Sujet :

Delphi

  1. #1
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut Créer un nouveau formulaire en premier plan
    Bonjour,

    j'ai une application qui permet plusieurs fenêtres indépendantes qui apparaissent dans la barre de tache. Cependant, lorsque je créé un nouveau formulaire celui-ci n'est pas en premier plan, je garde le premier formulaire affiché.
    J'utilise le code suivant pour permettre ma gestion multi-fenêtres,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure Tfrm2.CreateParams(var Params: TCreateParams);
     
    begin
     
      inherited;
     
      Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
     
      Params.WndParent := GetDesktopWindow;
     
      end;
    mais je n'arrive pas à donner le focus à une nouvelle fenêtre malgré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form := Tfrm2.Create(Application);
    Form.show;
    Form.SetFocus;
    Y-a-t'il y un moyen de donner le focus à tout nouvelle fenêtre ?

    Merci pour votre aide.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  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 DaveShot Voir le message
    j'ai une application qui permet plusieurs fenêtres indépendantes qui apparaissent dans la barre de tache. Cependant, lorsque je créé un nouveau formulaire celui-ci n'est pas en premier plan, je garde le premier formulaire affiché.
    Je ne reproduis pas le problème que vous décrivez, mais le fonctionnement souhaité.
    Y aurait-il dans la partie votre code non présenté quelques lignes qui interfèreraient ?
    Philippe.

  3. #3
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    merci pour votre réponse.

    Je ne vois rien d'autre qui pourrait interférer, j'ai bien la nouvelle fenêtre qui s'ouvre en premier plan, mais de suite elle passe en second plan. Et si j'en ouvre une autre, j'ai le même comportement.

    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  4. #4
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 105
    Points : 235
    Points
    235
    Par défaut
    Bonsoir,
    As-tu essayé Form.activate ?
    solilog

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    ce ne serait pas plutôt le BringToFront tout simplement ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    merci pour vos réponse.

    Je ne vois pas trop comment utiliser Form.activate pour l'ouverture de ma fenêtre, j'ai l'impression que c'est trop tard par rapport à son affichage.
    De plus, avec BringToFront ma nouvelle fenêtre est bien en premier plan, mais dans la même fenêtre que la précédente, et je ne peux pas switcher de l'une à l'autre de façon indépendante.

    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  7. #7
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Je pense que le souci vient du DoubleClick sur mon objet, car avec le click simple j'ai le bon comportement.

    Je vais investiguer sur ce point.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  8. #8
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    Avec ce code (testé sous W7), je n'ai aucun problème.

    TForm2 = la fiche formulaire. Elle n'est pas créée automatiquement au lancement du programme.

    Initialiser sa propriété FormStyle = fsStayOnTop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure Tform2.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
      Params.WndParent := GetDesktopWindow;
    end;
     
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       Action:= caFree;
    end;
    Ajout d'un formulaire à partir de Form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       Inc(FormNumber); //variable ayant été initialisée à zéro
       with TForm2.Create(Application) do
       begin
         Caption:= 'SubForm' + IntToStr(FormNumber);
         Show;
       end;
    end;
    Cordialement
    Thierry

  9. #9
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    le problème avec cette propriété c'est que la fiche est bien en premier plan, mais je ne pas pas switcher sur la précédente, la nouvelle reste toujours en premier plan.

    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  10. #10
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonsoir.

    je ne pas pas switcher sur la précédente, la nouvelle reste toujours en premier plan
    Si la précédente est du style StayOnTop, un simple clic la ramène au premier plan.
    Si la précédente n'est pas du style StayOnTop, il est évident qu'elle recevra le focus, mais sera cachée en tout ou partie par les autres fenêtres (stayontop).

    Thierry

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/04/2009, 11h56
  2. Champs de formulaire en premier plan
    Par oclone dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 30/06/2008, 11h04
  3. maintenir un formulaire au premier plan
    Par Virtualité dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 01/12/2007, 18h24
  4. Formulaire en premier plan ?
    Par ADONET dans le forum IHM
    Réponses: 2
    Dernier message: 04/02/2007, 01h04
  5. [VBA-E] formulaire au premier plan
    Par chmod777 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/04/2006, 11h24

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