TPanel i TImage = ??

0

Yoł!

mam takie pytanie:
jak ograniczyć poruszanie komponetem TImage po Tpanelu :]
bo nie wiem jak to zrobic :] na razie robie cos takiego:

w Public dopisuje: poz,poz2:TPoint;

a w TImage w sekcji OnMouseMove wstawiam:

if ssLeft in Shift then begin
GetCursorPos(poz2);
TImage.Left:=TImage.left+(poz2.x-poz.x);
TImage.Top:=TImage.Top+(poz2.y-poz.y);
GetCursorPos(poz);
end;

a w sekcji OnMouseDown:

GetCursorPos(poz);

wtedy komponetem mozna jeźdźć po całym Tpanelu ale nie wiem jak zorbić żeby! tImage można było jeździć tylko w Centróm tego Panela a nie po całym panelu :]

mam nadzieje że za duzo nie namieszałem i że mi pomożecie :]

0

A nie mozesz w tej procedurze sprawdzac wspolrzednych myszy i jesli jest za daleko to po prostu nie przesuwac ? np. if x > 50 then exit;

0

nie bardzo mi to pasuje ;] potrzebuje inno metode :] ktoś zna :]

0

rX,bY,X,Y :Integer;
[code]if ssLeft in Shift then begin
GetCursorPos(poz2);
X := TImage.left;
Y := TImage.top;
rX := (TPanel.width-TImage.width)-TImage.left; // Wolne miejsce
// po prawo
bY := (TPanel.height-TImage.height)-TImage.top; // Wolne miejsce
// na dole
if (X > 0) and (Y > 0) and (rX > 0) and (bY > 0) then begin
TImage.Left:=TImage.left+(poz2.x-poz.x);
TImage.Top:=TImage.Top+(poz2.y-poz.y);
end;

GetCursorPos(poz);
end;
[/code]

Chyba coś takiego (robię to z pamięci - nie testowane), pomysł jest.
Czy o to Ci chodziło?

1 użytkowników online, w tym zalogowanych: 0, gości: 1