Mover controles de un form en Runtime
Creando tres sencillos procedimientos en un formulario se pueden mover controles visuales en Runtime colocados en un form siempre que deriven de TControl. Basta con definir los siguientes procedimientos y asignarlos a todos los controles que queramos mover; Además se deben definir dos variables en la parte privada del form:
NOTA: Los procedimientos se deben definir no en la parte privada, sino como eventos del form.
En la parte final de artículo se puede descargar un ejemplo compilado con Delphi 6.
- procedure MouseMove;
- procedure MouseUp;
- procedure MouseDown;
// Definirlos como ventos del form procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); ... // Definir éstas variables en la parte privada... private Capturing:Boolean; MouseDownSpot:TPoint; .... // IMPLEMENTACION // Procedimintos a asignar a los eventos de los controles... procedure TForm1.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin // Estamos capturando? if Capturing then begin // Mover el componente TControl(Sender).Left := TControl(Sender).Left - (MouseDownSpot.x - x); TControl(Sender).Top := TControl(Sender).Top - (MouseDownSpot.y - y); end; end; procedure TForm1.MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // Estamos capturando? if Capturing then begin ReleaseCapture; // Liberar la captura Capturing := false; TControl(Sender).Left := TControl(Sender).Left - (MouseDownSpot.x - x); TControl(Sender).Top := TControl(Sender).Top - (MouseDownSpot.y - y); end; end; procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin // Comenzar la captura y movimiento Capturing := true; MouseDownSpot.X := x; MouseDownSpot.Y := Y; end; |
Se puede descargar un ejemplo:
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Buenísimo, muy útil y claro. Muchas gracias.
Fantástico truco! Muchísimas gracias, Neftalí por compartir tus conocimientos.