11.3. Dérivé de TControl
OnClick
L'événement se produit lorsque vous faites un clic sur un contrôle.
Classes __property:: TNotifyEvent OnClick = {read = FOnClick, écrire = FOnClick};
void __fastcall TForm1:: CheckBox1Click (TObject * Sender)
{
PageControl1-> ActivePage-> Visible = CheckBox1-> Checked;
}
OnDblClick
L'événement se produit lorsque vous effectuez un double-clic d'un contrôle.
Classes __property:: TNotifyEvent OnDblClick = {read = FOnDblClick, écrire = FOnDblClick};
Cet exemple avertit l'utilisateur que c'était la forme double-cliqué.
void __fastcall TForm1:: FormDblClick (TObject * Sender)
{
Application-> MessageBox ("Vous double-clique sur la forme", "Double-cliquez sur le message", MB_OK);
}
OnDragDrop
Qui se passe lorsque l'utilisateur remplit le glisser-déposer pour dessiner un objet sur le formulaire (il tombe de l'objet dans le contrôle en relâchant le bouton de la souris). Vous pouvez répondre à cet événement lorsque le formulaire est prêt à soutenir glisser-déposer.
__fastcall typedef void (* __closure TDragDropEvent) (System:: TObject * Sender, System:: TObject * Source, int X, int Y);
__property TDragDropEvent OnDragDrop = {read = FOnDragDrop, écrire = FOnDragDrop};
Les paramètres X et Y sont les coordonnées de la position de la souris sur le contrôle.
OnDragOver
Il se produit lorsque vous déplacez le pointeur de la souris sur le contrôle tout en attirant l'objet avec la souris. Vous pouvez répondre à cet événement lorsque le formulaire est prêt à soutenir glisser-déposer.
enum {dsDragEnter TDragState, dsDragLeave, dsDragMove}
__fastcall typedef void (* __closure TDragOverEvent) (System:: TObject * Sender, System:: TObject * Source, int X, int Y, TDragState État, bool & Accepter);
__property TDragOverEvent OnDragOver = {read = FOnDragOver, écrire = FOnDragOver};
TdragState indique l'état du contrôle par rapport à un autre contrôle. Les cas possibles sont:
Valeur | Signification |
dsDragEnter
| La souris entre dans le contrôle. |
dsDragMove
| Comme la souris se déplace sur le contrôle. |
dsDragLeave
| La souris quitte le contrôle. |
OnMouseDown
Se produit lorsque l'utilisateur clique sur un bouton de la souris lorsque le pointeur de la souris survole le contrôle.
enum {mbLeft TMouseButton, mbRight, mbMiddle};
enum {Classes__1 ssShift, SSALT, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble};
typedef TShiftState Septembre;
__fastcall typedef void (* __closure TMouseEvent) (System:: TObject * Sender, TMouseButton Button, Classes:: TShiftState Shift, int X, int Y);
__property TMouseEvent OnMouseDown = {read = FOnMouseDown, écrire = FOnMouseDown};
paramètres Shift répondre aux touches de déplacement et les boutons de la souris. touches Shift sont les Shift, Ctrl et Alt X et Y sont les coordonnées en pixels du pointeur de la souris dans la zone client de l'expéditeur.
Suivant l'exemple requiert un formulaire avec une barre d'état panneaux-quatre. (Réglage de la largeur des panneaux d'état à 150 Avant d'exécuter cet exemple). Lorsque l'utilisateur appuie sur un bouton de la souris, déplace la souris, et relâche le bouton de la souris, un rectangle est dessiné sur le formulaire. Lorsque le bouton de la souris est relâché, le rectangle apparaît sur le formulaire de la toile. Sa gauche et en bas à droite coins supérieurs sont définis par l'emplacement du pointeur de la souris lorsque l'utilisateur a appuyé et relâché le bouton de la souris. Bien que l'utilisateur fait glisser la souris, l'emplacement du haut, à gauche, en bas, et à droite du rectangle sont affichés dans la barre d'état.
startx int, StartY / / Declare en haut de l'unité de la forme de
/ / Utilisez ce code que le gestionnaire d'événements OnMouseDown de la forme:
void __fastcall TForm1:: Button1MouseDown (TObject * Sender, Button TMouseButton, TShiftState Shift, int X, int Y) {
StartX = X;
StartY = Y;
}
/ / Utilisez ce code que le gestionnaire d'événements OnMouseUp de la forme:
void __fastcall TForm1:: FormMouseUp (TObject * Sender, Button TMouseButton, TShiftState Shift, int X, int Y) {
Form1-> Rectangle toile-> (StartX, StartY, X, Y);
Panneaux StatusBar1-> [0] - Texte> = "";
Panneaux StatusBar1-> [1] - Texte> = "";
Panneaux StatusBar1-> [2] - Texte> = "";
Panneaux StatusBar1-> [3] - Texte> = "";
}
/ / Utilisez ce code que le gestionnaire d'événements OnMouseMove de la forme:
void __fastcall TForm1:: FormMouseMove (TObject * Sender, TShiftState Shift, int X, int Y)
{
if (Shift.Contains (ssLeft)) / / faire bouton-vous est en baisse
{
si (Y> StartY) {
Panneaux StatusBar1-> [0] - Texte> = "Top:" + IntToStr (StartY)
Panneaux StatusBar1-> [2] -> Texte = "En bas:" + IntToStr (Y);
}
else {
Panneaux StatusBar1-> [0] - Texte> = "Top:" + IntToStr (Y);
StatusBar1.Panels [2] Text = "En bas:". IntToStr + (StartY)
}
if (X> StartX) {
Panneaux StatusBar1-> [1] -> Texte = "Gauche:" + IntToStr (startx)
Panneaux StatusBar1-> [3] - Texte> = "A droite:" + IntToStr (X);
}
else {
Panneaux StatusBar1-> [1] -> Texte = "Gauche:" + IntToStr (X);
Panneaux StatusBar1-> [3] -> Texte: = "A droite:" + IntToStr (startx)
}
}
}
OnMouseMove
Se produit lorsque l'utilisateur déplace la souris alors que le pointeur de la souris survole le contrôle.
enum {Classes__1 ssShift, SSALT, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble};
typedef TShiftState Septembre;
__fastcall typedef void (* __closure TMouseMoveEvent) (System:: TObject * Sender, Classes:: TShiftState Shift, int X, int Y);
__property TMouseMoveEvent OnMouseMove = {read = FOnMouseMove, écrivez
= FOnMouseMove};
paramètres Shift répondre aux touches de déplacement et les boutons de la souris. touches Shift sont les Shift, Ctrl et Alt X et Y sont les coordonnées en pixels du pointeur de la souris dans la zone client de l'expéditeur.
Après les deux étiquettes quand code met à jour le pointeur de la souris est déplacée. Vous avez le code suppose deux étiquettes sur la forme, et lbHorz lbVert. Si vous attachez ce code à l'événement OnMouseMove d'un formulaire, lbHorz affiche continuellement la position horizontale du pointeur de la souris, et lbVert affiche continuellement la position verticale du pointeur de la souris alors que le pointeur se trouve sur le formulaire.
void __fastcall TForm1:: FormMouseMove (TObject * Sender, TShiftState Shift, int X, int Y)
{
xpos char [10];
ypos char [10];
itoa (X, xpos, 10);
itoa (Y, ypos, 10);
Légende lbHorz-> = xpos;
Légende lbVert-> = ypos;
}
OnMouseUp
Se produit lorsque l'utilisateur relâche le bouton de la souris est pressé pointeur de la souris cusando est sur le contrôle.
enum {mbLeft TMouseButton, mbRight, mbMiddle};
enum {Classes__1 ssShift, SSALT, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble};
typedef TShiftState Septembre;
__fastcall typedef void (* __closure TMouseEvent) (System:: TObject * Sender, TMouseButton Button, Classes:: TShiftState Shift, int X, int Y);
__property TMouseEvent OnMouseUp = {read = FOnMouseUp, écrire = FOnMouseUp};
paramètres Shift répondre aux touches de déplacement et les boutons de la souris. touches Shift sont les Shift, Ctrl et Alt X et Y sont les coordonnées en pixels du pointeur de la souris dans la zone client de l'expéditeur.
Le code suivant dessine un rectangle Lorsque l'utilisateur appuie sur un bouton de la souris, déplace la souris, et relâche le bouton de la souris. Lorsque le bouton de la souris est relâché, le rectangle apparaît sur le formulaire de la toile. Sa gauche et en bas à droite coins supérieurs sont définis par l'emplacement du pointeur de la souris lorsque l'utilisateur a appuyé et relâché le bouton de la souris.
startx int, StartY / / Declare dans la section interface de l'unité formulaire
void __fastcall TForm1:: FormMouseDown (TObject * Sender, Button TMouseButton, TShiftState Shift, int X, int Y)
{
StartX = X;
StartY = Y;
}
void __fastcall TForm1:: FormMouseUp (TObject * Sender, Button TMouseButton, TShiftState Shift, int X, int Y)
{
Form1-> Rectangle toile-> (StartX, StartY, X, Y);
}