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 :

glissement d'un composant delphi


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut glissement d'un composant delphi
    je vous demande un programme qui déplace un composant tshape pendant l'éxecution d'une application delphi

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Bonjour et bienvenue sur Developpez.com

    A ma connaissance il n'y a rien d'automatique pour cela.

    Et de manière classique pour déplacer un éléments il faut:
    - capturer les coord de la souris sur le conteneur de ta shape et/ou sur ta shape
    - implémenter les évènement OnMouseDown/Move/Up pour détecter le déplacement
    - stocker, les coord de départ de la souris sur le OnMouseDown
    - changer les coord. du Shape sur le OnMouseMove ou OnMouseUp (selon perf. souhaitée et visuel souhaité)

    bon code !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut requet de glissement d'un composant
    j'ai essayé ça avec les evenement ONmousedown /onmousemove/onmouseup
    mais le problème qui se pose c'est que le glissement ne s'arrètte pas malgrés
    que j'ai utilisé une variable boolean pour l'arréter voila le 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
    procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    selected:=true;
    end;
     
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    if selected then
    begin
    shape1.top:=y;
    shape1.left:=x;
    end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    selected:=false;
    end;
     
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    selected:=false;
    end;

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    En fait il faut faire attention aux différents type de coord relative à l'écran, à la form, à la shape.
    Un exemple qui fonctionne:

    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
    procedure TFMain.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
         b := True;
    end;
     
    procedure TFMain.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
         b := false;
    end;
     
    procedure TFMain.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
       n: TPoint;
    begin
         if b then
           begin
           n := Shape1.ClientToScreen( Point( X, Y ) );
           n := Self.ScreenToClient( n );
           Shape1.Left := n.X;
           Shape1.Top := n.y;
           end;
    end;
    A ceci pres que j'ai pas géré la position relative de la souris dans la shape... (la souris revient systèmatiquement dans le coin haut gauche de la shape, mais c'est pour le principe)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    C joint un petit bout de code que j'ai fait pour le déplacement avec différentes sources récupérées sur le forum en utilisant la fonction superbe qui est rechercher

    Sinon dans les sources, il y a encore les commentaires sur les composants shape (des tests que j'avasi fait)

    Necessite la JVCL
    Fichiers attachés Fichiers attachés
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. création de composants delphi
    Par segnac dans le forum Composants VCL
    Réponses: 11
    Dernier message: 25/10/2005, 10h07
  2. Convertir un composant Delphi 7 vers Delphi2005
    Par pointer dans le forum Composants VCL
    Réponses: 1
    Dernier message: 20/10/2005, 11h45
  3. Installation de composants Delphi 7 sur Delphi 2005
    Par Leobaillard dans le forum Composants VCL
    Réponses: 5
    Dernier message: 22/06/2005, 18h50
  4. utilisation composant delphi 7 win32 avec delphi 2005
    Par chtiot dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/02/2005, 06h49
  5. composants delphi pour firebird
    Par devalender dans le forum Débuter
    Réponses: 1
    Dernier message: 07/02/2005, 12h24

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