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

Langage Delphi Discussion :

Question sur WMNCHitTest


Sujet :

Langage Delphi

  1. #1
    Provisoirement toléré Avatar de crash override
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Points : 28
    Points
    28
    Par défaut Question sur WMNCHitTest
    Bonjour tout le monde

    J'ai une question où se trouve WMNCHitTest parce que j'ai voulu le faire mais je ne le vois pas dans evénements.

    Merci.

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Dis nous en plus si tu veux une réponse...

    1) Où as tu trouvé ce joli mot ? "WMNCHitTest "
    2) Sur quel composant tu veux l'appliquer ?
    3) Sais tu te servir d'un message (en création de composant) ?

    => Tu ne le trouveras pas dans les évenements d'un composant car c'est un message Windows, enfin tout dépends du composant qui l'implémente, enfin bref on peut pas répondre à ta question sans précisions.

    Cordialement,

  3. #3
    Provisoirement toléré Avatar de crash override
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Une autre technique utilise le message WM_NCHITTEST envoyé par Windows à votre fenêtre lorsque l'utilisateur bouge la souris. La réponse à ce message est utilisée par Windows pour déterminer dans quelle zone se trouve la souris : dans la partie cliente, sur un bouton système, sur un des bords, etc. Une de ces réponses nous intéresse particulièrement, il s'agit de la valeur HTCAPTION qui indique à Windows que le curseur se trouve sur la barre de titre. Dans ce cas, Windows interprètera le déplacement de la souris avec le bouton gauche enfoncé comme un déplacement de la fenêtre. C'est exactement ce qu'il nous faut. Nous allons donc ajouter un gestionnaire de message pour WM_NCHITTEST à notre fenêtre et retourner la valeur HTCAPTION. L'exemple suivant autorise le déplacement si le curseur se trouve dans la bande de 20 pixels de haut située en haut de la fenêtre, ce qui nous permet de simuler notre propre barre de titre.
    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
    interface
     
    uses
      Windows, Messages, Classes, Forms;
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure WMNCHitTest(var msg: TWMNCHitTest); message WM_NCHITTEST;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.DFM}
     
    procedure TForm1.WMNCHitTest(var msg: TWMNCHittest);
    var
      pt: TPoint;
    begin
      inherited;
      pt:= ScreenToClient(Point(msg.XPos, msg.YPos));

    et j'ai créer une forme

    créé un nouveau projet avec une seule fiche

    mis la propriété Borderstyle=bsnone
    mis la propriété TransparentColor=true
    mis la propriété TransparentColorvalue=clblue
    mis la propriété Color=clblue
    et j'ai mis une image et je veux la faire bouger.

  4. #4
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    bonsoir,

    j'imagine, crash override qie tu parles de ce sujet de la faq : http://delphi.developpez.com/faq/?pa...#deplacerfiche ?

    QU'est ce que tu n'as pas compris ? Il suffit de faire comme cela est indiquer dans la FAQ... Tu rajoute une procédure à ta fiche et tu déclare cet procedure dans la partie public de ta form.
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  5. #5
    Provisoirement toléré Avatar de crash override
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    je le fais, mais ça ne va pas

    voici mon code

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Button1: TButton;
        Monedit: TEdit;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Image2Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
     procedure WMNCHitTest(var msg: TWMNCHitTest); message WM_NCHITTEST;
     
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Close;
    end;
     
    procedure TForm1.Image2Click(Sender: TObject);
    begin
    Close;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Monedit.Text:='bonjour';
    end;
     
    procedure TForm1.WMNCHitTest(var msg: TWMNCHittest);
    var
      pt: TPoint;
    begin
      inherited;
      pt:= ScreenToClient(Point(msg.XPos, msg.YPos));
      if PtInRect(Rect(0, 0, ClientWidth, 20), pt) then
        msg.Result:= HTCAPTION;
    end;
     
     
    end.
    pour cette partie-là, j'ai fait un copier-coller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.WMNCHitTest(var msg: TWMNCHittest);
    var
      pt: TPoint;
    begin
      inherited;
      pt:= ScreenToClient(Point(msg.XPos, msg.YPos));
      if PtInRect(Rect(0, 0, ClientWidth, 20), pt) then
        msg.Result:= HTCAPTION;
    end;

  6. #6
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Je viens d'essayer, et ton code fonctionne sans soucis.
    On est bien d'accord, ce code sert à permettre de reproduire le comportement de la barre de titre dans le cas d'une fenêtre sans barre de titre.
    Donc, si tu cliques dans le haut de ta fiche et que tu restes cliqué tout en déplaçant ta souris, la fiche doit suivre.

    C'est bien ça ??
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  7. #7
    Provisoirement toléré Avatar de crash override
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    c'est bon, il va.
    J'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.WMNCHitTest(var msg: TWMNCHittest);
    var
      pt: TPoint;
    begin
      inherited;
      if  msg.Result = htClient then
        msg.Result := htCaption;
    end;

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

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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