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 :

Centrer Application sur l'écran


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut Centrer Application sur l'écran
    Bonjour, je suis nouveau en delphi et j'ai un problème avec le centrage des applications.
    J'arrive à centrer mon appli par rapport à ma résolution, mais comment faire pour y arriver dans n'importe quelle résolution.

    La taille de ma TForm est fixe.

    J'ai bien vu des solutions du style dans Create :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form1.Position := poScreenCenter;
    end;
    Mais ca ne marche pas, enfin je ne l'apelle jamais, je ne sais pas comment faire, ou l'apeller puisque ma TForm est crée de base avec le projet Delphi.

    Comment faire SVP?
    On ne peut créér ce qu'on ne peut imaginer...
    Tu sens la puissance du BIT?

  2. #2
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut
    bon déja j'ai vu qu'il fallait le linker avec Oncreate.
    Mais ca ne marche toujours pas, en changeant de résolution, ma fenetre n'est plus au centre de l'écran
    On ne peut créér ce qu'on ne peut imaginer...
    Tu sens la puissance du BIT?

  3. #3
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par donnadieujulien Voir le message
    bon déja j'ai vu qu'il fallait le linker avec Oncreate.
    Mais ca ne marche toujours pas, en changeant de résolution, ma fenetre n'est plus au centre de l'écran
    Tu peux aussi le faire à la conception dans la propriété Position.
    Mais je dois te dire que ça marche parfaitement.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par donnadieujulien Voir le message
    bon déja j'ai vu qu'il fallait le linker avec Oncreate.
    Mais ca ne marche toujours pas, en changeant de résolution, ma fenetre n'est plus au centre de l'écran
    cette propriété est appliquée au chargement de la fiche, pas lors d'un changement de résolution.

    je n'ai jamais testé l'effet des Anchors sur un TForm lors d'un changement de résolution...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut
    Bon en jouant sur le spropriété de la TForm dans la partie conception graphique ca le fait à peu pres, sauf que j'ai deux choses inexpliquées à ce stade de ma compréhension du delphi :

    1 - J'ai un TPanel qui contient un TPNGButton, et l'image de fond de ce bouton a un léger décalage vers le bas.

    2 - Suivant qu'on excecute sous XP ou vista, des décalages apparaissent, et du coup mes boutons sont pas la ou il faut...
    Faut 'il faire une disposition pour chaque OS ?
    On ne peut créér ce qu'on ne peut imaginer...
    Tu sens la puissance du BIT?

  6. #6
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par donnadieujulien Voir le message
    bon déja j'ai vu qu'il fallait le linker avec Oncreate.
    Mais ca ne marche toujours pas, en changeant de résolution, ma fenetre n'est plus au centre de l'écran
    Pour centrer une fenêtre après un changement de résolution, il faut intercepter le message WM_DISPLAYCHANGE

    Dans la section private de ton unité, tu déclares:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private
      { Déclarations privées }
      procedure WMDisplayChange(var Message:TMessage) ; message WM_DISPLAYCHANGE;
    Puis tu écris la fonction avec le code de recentrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.WMDisplayChange(var Message:TMessage);
    begin
      Left:= (Screen.Width-Width) div 2;
      Top:= (Screen.Height-Height) div 2;
    end;
    Et voila qui recentrera la fenêtre à chaque changement de résolution.

    Pat.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 423
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 423
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ donnadieujulien, ou tout simplement encore ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.FormPaint(Sender: TObject);
    begin
    Top  := (Screen.WorkAreaHeight -Height) div 2;
    Left := (Screen.WorkAreaWidth -Width) div 2;
    end;
    En fait avec cette méthode tu peux placer ta fiche n'importe ou sur l'écran quelque soit ta résolution.

    Exemple, centrer ta fiche dans le bas de l'écran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Top  := (Screen.WorkAreaHeight -Height) -5;
    Left := (Screen.WorkAreaWidth -Width) div 2;
    Fonctionne sous D6 et Seven 64bits

    @+,

    Cincap

  8. #8
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Je m'excuse je n'ai pas bien lu la question.
    @cincap Très bien vu, c'est même très ingénieux, même dans mes meilleures jours je n'aurais jamais l'idée d'utiliser le Paint d'une forme pour la faire déplacer.

    Mais reste à avouer que c'est plus net en utilisant le code de DOLPat®
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  9. #9
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut
    merci à vous!
    On ne peut créér ce qu'on ne peut imaginer...
    Tu sens la puissance du BIT?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter application sur double écran
    Par willytito dans le forum Windows XP
    Réponses: 5
    Dernier message: 04/03/2010, 16h51
  2. Application sur plusieurs écrans
    Par DR dans le forum C#
    Réponses: 5
    Dernier message: 24/07/2007, 10h07
  3. centrer une form sur l'écran
    Par diam's dans le forum Delphi
    Réponses: 10
    Dernier message: 31/07/2006, 15h52
  4. Comment centrer une fenêtre sur l'écran?
    Par bygui dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 07/04/2006, 10h25

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