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

API, COM et SDKs Delphi Discussion :

Comment récupérer les coordonnées sur le bureau d'une form ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment récupérer les coordonnées sur le bureau d'une form ?
    Bonjour,

    Je débute vraiment dans le Delphi et ai cherché un peu partout que ce soit dans la FAQ et sur le forum mais rien.

    Ma question va paraître nul pour beaucoup mais d'avance Merci pour tout.

    Voila..
    J'ai une Form (Form1) avec divers controls et boutons dont un bouton pour rechercher qui s'affiche au milieu de l'écran dès le lancement du programme.
    Sur le click de ce bouton une seconde Form (Form2) s'ouvre de façon modale et toujours avec les coordonnées que je lui ai données à la conception en Aligne alNone et Position poDesigned.
    Ce que j'aurais voulu c'est que ma Form2 s'ouvre en recouvrant uniquement le coin droit haut de ma Form1 car la Form2 répercute des actions sur la Form1. Essayer de récupérer en quelque sorte les coordonées de positionnement de la Form1 pour après un calcule imputer ces nouvelles coordonées de positionnement à la Form2 sur sa création.

    J'espère que cela n'est pas trop fouilli sinon veuillez m'en excuser.

    Merci pour tout
    FMA

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Dans le OnShow de ta Form2, change tout simplement les propriétés Width, Height, Left et Top de ta Form2 Caclule les en fonction de Form1...

  3. #3
    Membre habitué Avatar de phplive
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 179
    Points : 150
    Points
    150
    Par défaut
    Bsr,

    ben et la touche F1 ?

    Bon

    Il faut bien distinguer la fenêtre elle-même de sa zone cliente (souvent un rectangle blanc) dans laquelle on affiche ce qu'on veut : la zone cliente exclus les bordures, la barre de titre, les ascenseurs etc ...

    Pour récuperer les infos de la zone cliente c'est simple :

    Tu as : ClientRect qui te retourne les coordonnées de la zone cliente relative à la fenêtre.
    Donc ClientRect.Left et ClientRect.Top valent toujours zéro CQFD

    Ensuite si tu veux connaître les coordonnées du coin haut gauche de la zone cliente mais relativement à l'écran alors utilise ClientOrigin

    Si tu veux convertir une point quelconque de la zone cliente en coordonné sur l'écran alors utilise ClientToScreen()

    Maintenant si c'est toute la fenêtre que tu veux (bordures comprises) alors utilise l'API GetWindowRect() voir ex


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    procedure TForm3.OuSuisJe;
    var
      Pt : TPoint;
      ARect : TRect;
    begin
      // Recupère le rectangle délimitant toute la fenêtre relativement à l'écran
      GetWindowRect(Self.Handle,ARect);
     
      // Ici le calcul de Pt donne ClientOrigin !
      Pt := Point(0,0);
      Pt := ClientToScreen(Pt);
     
     
     
      ShowMessage('Ma zone cliente est en ('+
        IntToStr(ClientOrigin.X)+','+IntToStr(ClientOrigin.Y)+')'+
        ' et mesure '+IntToStr(self.ClientWidth)+'x'+IntToStr(ClientHeight)+
        #13#10#13#10+
        'Par contre je suis en ('+
        IntToStr(ARect.Left)+','+ IntToStr(ARect.Top)+')'+
        ' et mesure '+IntToStr(ARect.Right-ARect.Left)+'x'+
        IntToStr(ARect.Bottom-ARect.Top)+' en tenant compte des bordures et du titre !');
    end;
    Voilà

    @+
    Php

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/08/2009, 17h58
  2. Comment Récupérer les données sur un disque amovible
    Par mimi_01 dans le forum Composants
    Réponses: 0
    Dernier message: 06/05/2009, 20h09
  3. [E-97] Comment récupérer les coordonnées du curseur ?
    Par CAFOUIN dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 27/11/2008, 22h25
  4. Réponses: 6
    Dernier message: 10/10/2007, 12h28
  5. Comment récupérer les coordonnées d’un clique sur une image ?
    Par da_sys dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 12h34

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