Form Que Arastaveis Por Qualquer Ponto
#1
Posted 02/07/2004, 09:14
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure WMNChitTest(var M: TWMNchitTest);
message WM_NCHITTEST;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMNchitTest(var M:TWMNChitTest);
begin
inherited;
if M.result = htclient then
M.result := htCaption;
end;
end.
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...
#2
Posted 02/07/2004, 21:21
O código a seguir utiliza somente eventos padrões do Delphi, tornando-o compreensível até mesmo para os mais iniciantes na linguagem.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DateUtils, Menus;
type
TForm1 = class(TForm1)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
BotaoPressionado : Boolean;
OrigemX, OrigemY : Integer;
implementation
{$R *.dfm}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
IF ( Button = mbLeft ) THEN
BotaoPressionado := True;
OrigemX := X;
OrigemY := Y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
BotaoPressionado := False;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
IF BotaoPressionado THEN
BEGIN
Left := Left - ( OrigemX - X );
Top := Top - ( OrigemY - Y );
END;
end;
end.
Não se esqueça de ajustar os eventos do Form1 no Object Inspector da seguinte maneira:
OnMouseDown: FormMouseDown
OnMouseMove: FormMouseMove
OnMouseUp: FormMouseUp
E se você tiver outros componentes no formulário que você deseja que permitem arrastar o formulário na tela ao clicar e arrastar o mouse neles (como um TPanel ou qualquer outro por exemplo), é só definir os eventos no Object Inspector da mesma forma que no formulário.
Se alguém não entender o que está escrito ou eu não tiver sido muito claro, é só me perguntar, ok?
http://www.fanworks.kit.net/
#3
Posted 05/07/2004, 08:25
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)