Главная страница
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
4-49808
Gerda
2003-11-12 22:26
2004.01.16
Как получить ссылку на иконку окна


3-49451
ррр
2003-12-17 13:45
2004.01.16
BDE, ADO, сравнение скорости доступа


14-49731
Романов Р.В.
2003-12-25 09:24
2004.01.16
Happy New Year


8-49648
ChekhlatyAndrew
2003-09-15 20:29
2004.01.16
масштабирование и конвертирование в ч б


1-49570
raining day
2004-01-05 21:07
2004.01.16
Не могу нормально записать инфу в реестр