Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

Движение панели мышью   Найти похожие ветки 

 
AllDer   (2004-01-03 00:54) [0]

{Движение TPanel-
сделал движующую панель (типа окно),
но проблема ее можно затащить за пределы Form1 и
там отпустить мышь и потерять,упростил и писал-
}
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then begin
if Panel1.left<1 then Panel1.left:=2; {проверка на выход за предл формы-неработает!}
panel1.Left := panel1.left + X;
end;
end;
{собственно получается при нажатии ssLeft и движении
ограничить область движения -областью Form Но как?
}


 
Rouse_ ©   (2004-01-03 03:43) [1]

Хм... А смысл всего этого?


 
DDA ©   (2004-01-03 18:10) [2]

Rouse_ © (03.01.04 03:43) [1]
Хм... А смысл всего этого?

Нормальный смысл у меня тоже почти такая же ситуация была
Вот ответ:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
x1:integer;
lockDDA:Boolean;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;//когда нижимаем то запоминаем коордитату мыши чтоб перетаскивать панель за т о место за которое взался а не как у тебя было за край(может быть у тебя было так задумано)
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if lockDDA=true then// если заблокировал то проверяем не нужно ли разблокировать
begin
if x<x1 then exit else lockDDA:=false;
end;
if ssleft in Shift then
begin
if Panel1.left<1 then
begin
Panel1.left:=2;
lockDDA:=true;//и блокируем
end;
panel1.Left := panel1.left + X-x1;
end;
end;

end.



Удачи!!!


 
DDA ©   (2004-01-03 18:19) [3]

ОПА ещё легче


procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssleft in Shift then
begin
if Panel1.left<1 then
begin
if x<x1 then exit;
end;
panel1.Left := panel1.left + X-x1;
end;
end;


 
AllDer   (2004-01-04 01:08) [4]

Спасибо попробую.А то хотел уже на ограничение
движение мыши(API) в пределах Form1
при нажатии ssLeft in Shift



Страницы: 1 вся ветка

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
3-49388
pavell
2003-12-20 15:14
2004.01.16
SQl-запросы


4-49814
Tommy
2003-11-12 14:31
2004.01.16
vizov DLL...


1-49593
Toots
2004-01-05 12:56
2004.01.16
параметр командной строки


7-49789
Anton777
2003-10-30 15:15
2004.01.16
Диспетчер устройств.


3-49461
sss
2003-12-17 18:11
2004.01.16
разбиение на файлы IB