![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окна [D6]
AndreyAG © (2002-11-10 09:51:00)Уважаемые Мастера ПОМОГИТЕ ! Как перемещать окна ,если нет системой области окна (свойство bordertyle:=bsNone) ?
Alex44 (2002-11-10 11:59:00) [1]To Николай Быков
IMHO, standartnyj sposob zamechatelen tem, chto on (1) automaticheskij, i (2) prinimaet vo vnimanie ustanovki systemy (typa opaque move).
Николай Быков (2002-11-10 10:36:00) [2]
> _Nicola_ (10.11.02 10:34)
Моим способом можно также перемещать все компоненты, которые умеют обрабатывать события OnMouseDown OnMouseUp OnMouseMove
_Nicola_ (2002-11-10 10:34:00) [3]Совет Nicko есть в куче FAQов. Так можно перемещать не только форму, но другие компоненты на форме.
Nicko (2002-11-10 10:12:00) [4]
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; { a magic number }
begin
ReleaseCapture; perform(WM_SysCommand, SC_DragMove, 0);
end;
Вместо TForm1 поставь компонент, которым будешь перемещать.
P.S. Нашел в FAQ!
AndreyAG (2002-11-10 10:09:00) [5]Николай Быков, спасибо !
AndreyAG (2002-11-10 10:07:00) [6]А поподробнее?
Николай Быков (2002-11-10 10:04:00) [7]Я всегда делаю так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
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;
XPos,YPos:integer;
MDown:boolean;
implementation
{$R *.dfm}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MDown:=true;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MDown:=false;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not MDown then
begin
XPos:=X;
YPos:=Y;
end
else
begin
Left:=X-XPos+Left;
Top:=Y-YPos+Top;
end;
end;
end.
Song (2002-11-10 09:56:00) [8]WM_NCHITTEST
SC_DRAGMOVE
вручную обрабатывая onMouseDown/onMouseUp
и ещё куча способов можно придумать