Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
1-49536
SergP
2004-01-02 15:37
2004.01.16
Как отобразить страничку из переменной на рабочем столе?


4-49800
Extazio
2003-11-12 21:05
2004.01.16
Как Как зная хендл окна получить и вывести его иконку в битмап...


1-49540
DimaK
2003-12-29 12:02
2004.01.16
Два вопросика по FastReport


14-49713
McSimm
2003-12-26 10:50
2004.01.16
« По Вашим письмам »


14-49716
copyr25
2003-12-22 18:58
2004.01.16
---|Ветка была без названия|---




   Наверх