Пятница, 2017-12-15, 7:40 AM
Главная Форум Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Энфа » Вопросы и решения » Delphi 7 » Изменение положения окна при нажатой мышки
Изменение положения окна при нажатой мышки
EnforcerДата: Среда, 2010-04-28, 1:42 AM | Сообщение # 1
Энф
Группа: Администраторы
Сообщений: 534
Награды: 4
Репутация: 33
Статус: Нет меня
Данный код позволит изменить положение окна, когда вы удерживаете кнопку мыши на форме. Принцип почти такой же будто вы держите за заголовок программы. На заголовке формы будут видны текущие координаты курсора.
Code
unit Unit1;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls ;
Type
    TForm1= class(TForm)
       

      procedure FormKeyDown(Sender: TObject; var Key: Word;
        Shift: TShiftState);
      procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
        Y: Integer);
      procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
      procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
    private
      { Private declarations }
    public
     MoveForm:Boolean;
     XX,YY:Integer;
    end;

var
    Form1: TForm1;
    Pos: TPoint;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
begin
MoveForm:=True;

end;
Procedure FindPos;
Var
Pos: TPoint; X,Y:Integer;
Begin

If Form1.MoveForm=True then Begin                           
GetCursorPos(pos);
X:=Pos.X;
Y:=Pos.Y;
Form1.Caption := IntToStr(X) + ' ' + IntToStr(Y);

Form1.Left:= Form1.Left -(Form1.XX - X);
Form1.Top:= Form1.Top -(Form1.YY - Y);
Form1.YY:=Y;
Form1.XX:=X;
End;
End;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
   Var Pos: TPoint;
begin
If Form1.MoveForm=True then Begin                           
GetCursorPos(pos);
X:=Pos.X;
Y:=Pos.Y;
Form1.Caption := IntToStr(X) + ' ' + IntToStr(Y);

Form1.Left:= Form1.Left -(Form1.XX - X);
Form1.Top:= Form1.Top -(Form1.YY - Y);
Form1.YY:=Y;
Form1.XX:=X;

End;
End;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
begin
MoveForm:=False;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    Var
Pos: TPoint;   
begin
GetCursorPos(pos);
Form1.YY:=Pos.Y ;
Form1.XX:=Pos.X;
   MoveForm:=True;
end;

end.
 
ХамягДата: Понедельник, 2010-09-27, 4:15 PM | Сообщение # 2
Рядовой
Группа: Друзья
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Нет меня
намного проще сделать так:
Code
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
begin
   ReleaseCapture;
   Perform(WM_SYSCOMMAND, $F012, 0);
end;

куда короче чем то что у тебя (правда расположение курсора не показывает)

 
Форум Энфа » Вопросы и решения » Delphi 7 » Изменение положения окна при нажатой мышки
Страница 1 из 11
Поиск:


Copyright ELForcer © 2017