Текущий архив: 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