DragDrop es una forma rápida de operar Windows. Como desarrollador basado en Windows
Delphi también admite operaciones de arrastrar y soltar, y la función de arrastrar y soltar del sistema de aplicación es muy conveniente, lo que realmente refleja el
El poder y la conveniencia de Delphi.
Todos los controles proporcionados por Delphi (Control, que pueden obtener el enfoque de entrada) admiten operaciones de arrastre y caída y tienen
Las propiedades correspondientes de arrastrar y soltar, arrastrar y soltar eventos, y arrastrar y soltar métodos. A continuación, presentaremos primero el soporte de arrastrar y soltar del control, y luego daremos el
Pasos generales y ejemplos de aplicaciones de envío de operaciones de arrastre y caída.
9.1 Soporte de arrastre y suelto para controles
En las operaciones de arrastrar y soltar, los controles se pueden dividir en dos categorías: control de origen y control de destino. La mayoría de los controles se pueden usar como controles de origen
También se puede usar como control objetivo. Pero también hay algunos controles que solo pueden soportar uno de ellos.
9.1.1 Propiedades de arrastrar y soltar
Hay dos propiedades principales de arrastre y caída:
● Dragmode: modo de arrastre
Todos están configurados en el control de fuente de arrastrar y soltar. DragMode controla al usuario al presionar el control durante el tiempo de ejecución
¿Cómo reacciona el control cuando el mouse está abajo? Si DragMode está configurado en DMAUTOMATIC, cuando el usuario presiona el mouse en el control
DragMode comienza automáticamente;
Para determinar si un arrastre puede comenzar.
Dragcursor se usa para seleccionar el cursor que se muestra al arrastrar.
Los desarrolladores deben respetar las especificaciones de interfaz que son comunes en el proceso de programación. Pero a veces para fines específicos,
Los desarrolladores también pueden asignar su propio cursor para arrastrar.
9.1.2 Evento de arrastrar y soltar
Hay tres eventos principales de arrastre y caída:
● Ondragover: inspire cuando se arrastre
● Ondragdrop: Inspire al arrastrar y soltar
● Onenddrop: Inspire al arrastrar los extremos
Los dos primeros eventos son respondidos por el control objetivo, y el último es respondido por el control de la fuente.
La función principal del evento Ondragover es determinar si el control es aceptable cuando el usuario deja caer el arrastre en su lugar.
Sus parámetros incluyen:
Fuente: Tobject;
Estado: tdragState;
TDragState es un tipo de enumeración que representa la relación entre los elementos de arrastre y solta y los controles objetivo.
tipo tdragState = (dsdragenter, dsdragleave, dsdragMove);
El significado de diferentes valores es el siguiente:
Tabla 9.1 El valor y la importancia de DragState
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Valor de significado
─────ellaidor
dsdragenter arrastre el objeto a un control que permite que el objeto arrastrado se elimine. es el estado predeterminado.
DSDRAGLeave arrastra el objeto lejos de un control que permite que el objeto de arrastre se elimine.
El objeto de arrastre dsdragMove se mueve dentro de un control que permite que el objeto de arrastre se elimine.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
El usuario puede usar los parámetros proporcionados para determinar si el arrastre caído es aceptable, como:
● Juez Tipo de control de fuente:
Aceptar: = fuente es tlabel;
● Jugar objeto de control de fuente:
Aceptar: = (fuente = tabset1);
● Posición del cursor de juez:
Ver rutinas en (9.2), (9.3).
● Juez Estado de arrastre:
If (la fuente es tlabel) y (estado = dsdragmove) entonces
begin source.dragicon: = 'new.ico';
fin
demás
Aceptar: = falso;
Cuando acepta = True, el control de destino puede responder al evento OndragDrop, que se utiliza para determinar que el programa después de que se elimine el arrastre
Cómo lidiar con eso.
Los parámetros del proceso de procesamiento de eventos OndragDrop incluyen el control de origen y la posición del cursor. Esta información se puede utilizar para procesar
Confirmación.
El evento OnEdDrag es respondido por el control de origen después de que se completa la operación de arrastre, y el control de fuente utiliza para realizar correspondientes
tratar con. El final de la operación de arrastre incluye tanto la arrastre como la caída que se aceptan, y el usuario lo libera en un control que no se puede dejar caer.
Pon el mouse. Los parámetros de este proceso de procesamiento de eventos incluyen el control objetivo (objetivo) y las coordenadas de la posición de caída. si
Target = nil, significa que el elemento arrastrado no es aceptado por ningún control.
En la operación de copia de arrastre y saliva de arrastrar y soltar introducida en la Sección 3, si la operación es exitosa, el cuadro de lista de archivos se enumerará a continuación.
El contenido que se muestra debe actualizarse. El siguiente programa se utiliza para implementar esta función.
Procedimiento tfmform.fileListEndDrag (remitente, objetivo: tobject; x, y: entero);
Comenzar
if objetivo <> nil entonces filelist.update;
fin;
Además de los tres eventos descritos anteriormente, hay otro evento Onmousedown, que también se usa comúnmente para las respuestas de arrastrar y soltar.
Aunque Onmousedown no es un evento especial de arrastrar y soltar, el comienzo de arrastrar en modo manual está en esto
Implementado durante el proceso de procesamiento de eventos.
9.1.3 Método de arrastrar y soltar
Hay tres formas de arrastrar y soltar:
● Begener: Inicie un arrastre en modo manual
● Enddrag:
Terminar con un arrastre
● Arrastrarse: determina si se está arrastrando un control
Los tres métodos son utilizados por el control de la fuente.
Cuando DragMode se establece en DMManual, el arrastre debe llamar al método BegindRag del control para comenzar.
BegindRag tiene un parámetro booleano inmediato. Si el parámetro de entrada es verdadero, arrastre para comenzar de inmediato,
Cambiar a la configuración de Dragcursor. Si el parámetro de entrada es falso, hasta que el usuario mueva el cursor por cierta distancia
(5 píxeles) antes de cambiar el cursor y comenzar a arrastrar. Esto permite que el control acepte un evento de OnClick sin comenzar
Arrastre la operación.
El método EndDrag aborta el estado arrastrado de un objeto. Tiene una caída de parámetros booleanos. Si la caída está establecida
Para verdadero, el objeto arrastrado se cae en la posición actual (si se puede aceptar está determinado por el control de destino);
Si es falso, el arrastre se cancela en su lugar.
El siguiente programa muestra que el arrastre se cancela cuando se arrastra a un panel de control.
procedimiento tForm1.Panel1dragover (remitente, fuente: tobject; x, y: entero;
Estado: tdragState;
Comenzar
Aceptar: = falso;
if (la fuente es tlabel) y (estado = dsdragenter) entonces
(Fuente como tlabel) .enddrag (falso);
fin;
El método de drenaje determina si se está arrastrando un control. En el siguiente ejemplo, cuando el usuario arrastra una casilla de verificación diferente
Cuando la ventana cambia a un color diferente.
procedimiento tForm1.FormActivate (remitente: tobject);
Comenzar
Casilla de verificación1.dragMode: = dmautomatic;
Checkbox2.dragMode: = dmautomatic;
Checkbox3.dragMode: = dmautomatic;
fin;
procedimiento tform1.FormDragover (remitente, fuente: tobject; x, y: entero;
Estado: tdragState;
Comenzar
Si la casilla de verificación1.dragging entonces
Color: = Claqua;
Si checkbox2.dragging entonces
Color: = clyellow;
Si la casilla de verificación.
Color: = cllime;
fin;