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 :

Type de redimensionnement d'une form


Sujet :

Composants VCL Delphi

  1. #1
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Type de redimensionnement d'une form
    Salut tl monde!

    Comment savoir si une form va être (ou est) redimensionnée en vertical, horizontal ou en diagonal?
    J'ai essayé de le savoir en récupérant la propriété du curseur...

    mais je ne parviens pas récupérer cette propriété en fait.
    Ça se trouve, c'est probablement super simple... ou impossible?

    Merci de votre aide!

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 52
    Points : 36
    Points
    36
    Par défaut
    Et pourquoi tu ne vérifie pas la position de la souris dans la fenetre?

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Oui, c'est une idée... Bien vu! J'essaye de suite!

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    La détection de la position de la souris avec FormOnMove de va pas!
    En effet, la détection sur la form s'arrête aux bordures...
    J'ai donc détecté la position de la souris dans un timer, avec Mouse.CursorPos.
    Voilà les sources de ce que j'ai pu faire:
    http://site.voila.fr/subut/data3/redim.zip (3 ko)

    Et l'éxé: http://site.voila.fr/subut/data3/redimexe.zip (191 ko)
    Merci de bien vouloir l'essayer, je voudrai être sûr que ça fonctionne avec toutes les configs!
    Et si vous avez des idées pour simplifier ce code, je suis preneur!

    Surtout, il ya 2 choses qui me semblent bizarres que j'aimerai bien comprendre:
    - BorderWidth qui devrait être une propriété variable, mais doit rester à 5!
    - La constante decal: Je ne sais pas comment l'obtenir, quelle est sa propriété?

    Merci de votre aide!

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    J'ai essayé le prog sur d'autres PC, et ya "décal" qui varie suivant la config...
    Selon vous, quelle est la propriété qui correspond à cette valeur?

  6. #6
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Il y a aussi une autre solution :
    ( sous Windows 98/ME le label n'est mis à jour qu'a la fin, mais le message est bien reçu de suite, pour preuve la limitation de dimensionnement )

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    type
      TForm1 = class(TForm)
        Label1: TLabel;
      private
        { Déclarations privées }
        Procedure WMSizing(var Mes: TMessage); message WM_SIZING;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    { TForm1 }
     
    procedure TForm1.WMSizing(var Mes: TMessage);
    Var p:PRect;
    begin
      Case Mes.WParam Of
        WMSZ_BOTTOM      :Label1.Caption:='Bas ';
        WMSZ_BOTTOMLEFT  :Label1.Caption:='Bas gauche';
        WMSZ_BOTTOMRIGHT :Label1.Caption:='Bas droit';
        WMSZ_LEFT        :Label1.Caption:='Gauche';
        WMSZ_RIGHT       :Label1.Caption:='Droit';
        WMSZ_TOP         :Label1.Caption:='Haut';
        WMSZ_TOPLEFT     :Label1.Caption:='Haut gauche';
        WMSZ_TOPRIGHT    :Label1.Caption:='Haut droit';
      End;
      p:=PRect(Mes.LParam);
      if p^.Bottom>500 Then p^.Bottom:=500;
      if p^.Right>500 Then p^.Right:=500;
      if p^.top<100 Then p^.Top:=100;
      if p^.Left<100 Then p^.Left:=100;
    end;

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    MERCI NONO40!
    C'est pile ce que je cherchais!

    -> Résolu!

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    J'ai essayé le code sous Xppro, et il faut un clic+déplacement pour appeller la proc.
    J'ai besoin d'obtenir le curseur avant le clic...
    Je remarque tout de même ta solution très intérressante! Merci, à+

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

Discussions similaires

  1. numero des types de controls d'une form
    Par 0n31l dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/12/2010, 18h01
  2. Empêcher le redimensionnement d'une Form
    Par Loubna.B dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/09/2009, 20h16
  3. redimensionnent d'une forme
    Par michel71 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 14/08/2007, 15h51
  4. Redimensionnement dans une form
    Par MottetCCSF dans le forum Composants VCL
    Réponses: 1
    Dernier message: 06/08/2007, 10h34
  5. Comment redimensionner automatiquement une Form ?
    Par nek_kro_kvlt dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2005, 23h05

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