Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
Delphi 12 Athens
|
AW: Kollision Image Shape
12. Apr 2017, 14:33
Ein kleines Beispiel(ungetestet):
Delphi-Quellcode:
function CanPosChanging(AControl: TControl; const ANewPos: TRect): Boolean;
var
lControl: TControl;
lRect: TRect;
begin
// Überschneidung mit Shape ist unzulässig
if Assgined(AControl.Parent) then
begin
for lControl in AControl.Parent.Controls do
begin
if lControl is TShape then
begin
if IntersectRect(lRect, lControl.BoundsRect, ANewPos) then
begin
Result := False;
Exit;
end;
end;
end;
end;
Result := True;
end;
procedure DoPosChanging(AControl: TControl; const ANewPos: TRect);
begin
if CanPosChanging(AControl, ANewPos) then
AControl.BoundsRect := ANewPos;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
dx, dy: Integer;
lNewPos: TRect;
begin
dx := 0;
dy := 0;
case Key of
VK_UP: dy := -1;
VK_DOWN: dy := +1;
VK_Left: dx := -1;
VK_RIGHT: dx := +1
else
Exit;
end;
// Testendruck nicht an anderer Stelle weiter verarbeiten
Key := 0;
lNewPos := MyImage.BoundsRect;
OffsetRect(lNewPos, dx, dy);
DoPosChanging(MyImage, lNewPos);
end;
|
|
Zitat
|