Главная страница
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.021 c
1-49584
Viking
2004-01-05 14:59
2004.01.16
Работа с Object Repository


3-49407
Mord_Sit
2003-12-19 11:10
2004.01.16
Partitioned table


8-49649
kill_john
2003-09-15 09:41
2004.01.16
Как сохранить текущий кадр


3-49421
kvit
2003-12-19 07:45
2004.01.16
Проблема с вызовом хранимой процедуры MSSQL+ADO


8-49647
Delphin
2003-09-16 14:31
2004.01.16
Народ, помогите пожалуйста найти компонент dxPack первой версии (