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

Composants VCL Delphi Discussion :

L'appel de Show d'une form change sa position !


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut L'appel de Show d'une form change sa position !
    Bonjour,

    J'aimerais comprendre le fonctionnement de la VCL sur la position des fenêtres.
    J'ai deux écrans, le principal est à droite et donc l'origine 0,0 est le point en haut à gauche de mon moniteur de droite, le moniteur de gauche a une abscisse négative.

    Ce code fonctionne, la fenêtre est bien affichée à 200 pixel à gauche sur le moniteur de droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    Var
      MyForm:TForm2;
    begin
      MyForm := TForm2.Create(self);
      MyForm.Position := poDesigned;
      MyForm.Left := 200;
      MyForm.Show;
    end;
    Si j'écris MyForm.Left := -100; ça marche aussi la fenêtre est affichée à cheval sur les deux écrans en -100.
    Si j'écris MyForm.Left := -500; ça ne marche pas ! la fenêtre est affiché à droite de mon écran principal.
    J'ai remarqué que si MyForm.Left est inférieur à -Width/2 ça ne marche pas !!!

    Bien sur, si j'écris la ligne "MyForm.Left := -500" après le Show, ça marche mais ça ne me convient pas.
    J'ai absolument besoin de positionner la fenêtre avant l'appel du Show car je fait une lecture d'objets dans un flux et cela me pose trop de problème.

    Que se passe-t-il lors de l'appel de la fonction Show ??
    Y a-t-il une propriété à modifier pour éviter cela ? Comme par exemple DefaultMonitor ?

    Merci
    Franck

  2. #2
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    A peine posée, tout juste résolu ! :-)

    En changeant la propriété DefaultMonitor à dmDesktop ça marche !!!

    J'espère que cela servira à quelqu'un d'autre.

    Franck

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2012, 19h30
  2. [Débutant]Appeler un UserControl dans une Form
    Par Shr3ck dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2009, 14h14
  3. Réponses: 1
    Dernier message: 15/05/2008, 20h00
  4. Réponses: 2
    Dernier message: 05/11/2005, 18h32
  5. Réponses: 2
    Dernier message: 16/10/2005, 14h07

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