Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como mover una ventana??? (https://www.clubdelphi.com/foros/showthread.php?t=10936)

cone220 01-06-2004 22:29:28

Como mover una ventana???
 
Tengo una aplicación en la que definí que el Form principal no tiene bordes. Quiero mover la ventana pinchando en un componente del tipo Panel. He visto algunas aplicaciones que funcionan de esa manera, pero no se como hacerlo.

marcoszorrilla 01-06-2004 22:40:27

Mira este ejemplo:
Código Delphi [-]
unit frSinBorde;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    
  private
   private
   procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
 inherited;
 if Msg.Result = htClient then Msg.Result := htCaption;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

end.

Un Saludo.

__cadetill 01-06-2004 22:42:16

quizás este hilo de hoy te sirva

roman 01-06-2004 23:04:09

El método que te mencionan te servirá para arrastrar la ventana tomándola de alguna parte de su área cliente pero un panel no forma parte de ésta.

Una manera de mover la ventana, tomándola de un panel, podría ser manejando los eventos OnMouseDown, OnMouseMove y OnMouseUp del panel.

Comienza declarando dos variables en tu formulario:

Código Delphi [-]
type
  TFrom1 = class(TForm)
  private
    DragPoint: TPoint;
    Dragging: Boolean;
  end;

DragPoint será el punto del panel desde donde arrastres la ventana y Dragging controlará si estás arrastrando o simplemente moviendo el mouse sobre el panel. Conforme desplaces el mouse deberás fijarte en la diferencia de las coordenadas con respecto de DragPoint y sumárselas a las propiedades Left y Top del formulario:

Código Delphi [-]
procedure TForm1.Panel1MouseDown(...; X, Y: Integer);
begin
  Dragging := true;
  DragPoint := Point(X, Y);
end;

procedure TForm1.Panel1MouseMove(...; X, Y: Integer);
begin
  if Dragging then
  begin
    Left := Left + X - DragPoint.X;
    Top := Top + Y - DragPoint.Y;
  end;
end;

procedure TForm1.Panel2MouseUp(...; Shift: TShiftState; X, Y: Integer);
begin
  Dragging := false;
end;

// Saludos


La franja horaria es GMT +2. Ahora son las 08:39:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi