IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

aso14

Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ?

Noter ce billet
par , 17/03/2023 à 00h44 (599 Affichages)
Pour ce tutoriel, je vais vous montrer comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi. Le truc est très simple et n'importe quel développeur Delphi peut le faire.


Nom : 1_8eRJXyHidSP1ZT7PQnRxBg.gif
Affichages : 625
Taille : 293,6 Ko

Quels sont nos besoins ?

Nous devrions savoir comment nous voulons déplacer un contrôle. Nous avons plusieurs façons de déplacer un objet de contrôle. Nous pouvons utiliser les touches du clavier (Haut, Bas, Gauche ou Droite) ou nous pouvons également utiliser une souris. Il existe d'autres façons de déplacer un objet de contrôle, mais pour ce tutoriel, nous n'utiliserons qu'une seule méthode, le contrôle de la souris.

Étape 1 : Trois (03) actions pour déplacer un objet de contrôle

Il y a trois (03) actions pour déplacer un objet de contrôle :

  • Maintenir enfoncé le bouton gauche de la souris
  • Déplacer la souris (le curseur se déplace également sur l'écran)
  • Relâcher le bouton gauche de la souris
  • Par conséquent, nous devons utiliser trois (03) événements Delphi : OnMouseDown, OnMouseMove, OnMouseUp. Tous ces événements appartiennent à notre objet de contrôle (par exemple : TRectangle).


Étape 2 : Implémentation

Nous pouvons maintenant commencer notre programme. Pour cela, créez un nouveau projet FMX et placez un objet de contrôle (par exemple : TRectangle) sur un formulaire de programme.

Nom : scrrren.png
Affichages : 74
Taille : 269,0 Ko

Événement OnMouseDown

Nous allons implémenter notre premier code dans l'événement OnMouseDown. Pour cela, nous devons savoir comment nous pouvons le faire. Lorsque nous appuyons longuement sur le bouton gauche de la souris, nous devons enregistrer des informations sur notre position actuelle et notifier à notre programme que quelqu'un a appuyé sur le bouton gauche de la souris. Nous avons donc besoin de trois (03) variables :

  • une variable pour indiquer l'état de notre bouton gauche (GMouseDown)
  • deux (02) variables pour enregistrer les positions (X,Y) du curseur


PS : Les variables doivent être des variables globales.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7

var
  Form2: TForm2;

  GMouseDown : Boolean =  false;  // Global variable
  GX0,GY0 : Single;               // Global variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9

procedure TForm2.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
 GMouseDown := True;  // Save state
 GX0 := X;
 GY0 := Y;
end;
Événement OnMouseUp

C'est trop facile ! Bouton relâché.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7

procedure TForm2.Rectangle1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
GMouseDown := False;  // our last global variable 
end;
Événement OnMouseMove

Implémentons maintenant notre code ! Dans cette partie, nous devons simplement utiliser une condition "if" et changer la position de notre objet de contrôle à mesure que la souris se déplace. Les variables X et Y sont les positions actuelles du curseur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11

procedure TForm2.Rectangle1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Single);
begin
  if GMouseDown then
  begin
  Rectangle1.Position.X := Rectangle1.Position.X +(X-GX0);
  Rectangle1.Position.Y := Rectangle1.Position.Y+ (Y-GY0);
  end;
end;
Notre 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 Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects;

type
  TForm2 = class(TForm)
    Rectangle1: TRectangle;
    procedure Rectangle1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    procedure Rectangle1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    procedure Rectangle1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Single);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form2: TForm2;

  GMouseDown : Boolean =  false;
  GX0,GY0 : Single;

implementation

{$R *.fmx}

procedure TForm2.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
 GMouseDown := True;
 GX0 := X;
 GY0 := Y;
end;

procedure TForm2.Rectangle1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Single);
begin
  if GMouseDown then
  begin
  Rectangle1.Position.X := Rectangle1.Position.X +(X-GX0);
  Rectangle1.Position.Y := Rectangle1.Position.Y+ (Y-GY0);
  end;
end;

procedure TForm2.Rectangle1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
GMouseDown := False;
end;

end.

Merci !!!

Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Viadeo Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Twitter Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Google Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Facebook Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Digg Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Delicious Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog MySpace Envoyer le billet « Comment déplacer un objet de type contrôle pendant l'exécution d'un programme en Delphi ? » dans le blog Yahoo

Commentaires