Patryk27 napisał(a)
Ok. Niech będzie z tablicami.
Ustaw timer na milisekundę, a w tymże timerze:
Image1.Left := RecImage1.Left;
Image1.top := RecImage1.Top
Boże drogi czy w serwisie nie ma możliwości oznaczania pomysłów jako nad wyraz głupi??? Albo chociaż jakiś future, który by pozwalał porazić takowego user prądem... Cokolwiek.
@TomRiddle to co chcesz osiągnąć jest, hm jakby to delikatnie ująć - głupie. Tak się nie robi, rekordy nie są do tego. Po co dublować wartości? Po co dodatkowa zmienne - przecież masz Image1.Left - dlaczego nie podstawiasz wartości tutaj od razu?
Można rozwiązać Twój problem na dwa sposoby (znaczy ja widzę dwa sposoby), oba mają swoje ograniczenia. Pierwszy to wskaźniki - zamiast Left, Top: Integer; daj Left, Top: PInteger; i przypisz do nich adres zmiennych z Image1 RecImage1.Left := @Image1.Left; a potem jak zmieniasz RecImage1.Left^ := 100; to tak naprawdę zmieniasz Image1.Left. Jego ograniczeniem/wadą jest to, że jak zrobisz RecImage1 := RecImage2 to się wszytko posypie. Drugi to klasa zamiast rekordu
type
TRecImage = class
private
FLeft: Integer;
procedure SetLeft(const Value: Integer);
public
property Left: Integer read FLeft write SetLeft;
end;
procedure TRecImage.SetLeft(const Value: Integer);
begin
FLeft := Value;
Image1.Left := Value;
end;
wadą jest to, że jest to klasa więc najpierw trzeba stworzyć jej obiekt a później go zniszczyć. Dodatkowo trzeba jakoś pożenić settery z obiektami, którym mają ustawiać właściwości. No i na koniec takie coś też nie zadziała
var
a, b: TRecImage;
begin
a.Left := 10;
b := a;
end;