Dynamiczy komponent TImage

0

Mam problem z obsluga zdarzen w dynamicznie tworzonym komponencie TImage??

wyglada to tak:
procedure TForm1.Button1Click(Sender: TObject);
begin
TImage.create(self).name:='obrazek'+IntToStr(licznik);
with TImage(FindComponent('obrazek'+IntToStr(licznik))) do
begin
parent:=form1;
height:=25;
width:=25;
top:=0; left:=0; picture.loadfromfile('bmp/1.bmp');
licznik:=licznik+1;
onMouseMove:=Image1.OnMouseMove;
onMouseDown:=Image1.OnMouseDown;
onMouseUp:=Image1.OnMouseUp;
end;

end;
Tak tworze komponent

a tak go przesowam:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
begin
startx:=x;
starty:=y;
draging:=true;
end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if draging then
begin

image1.Left:=image1.Left+(-startx+x);
image1.top:=image1.top+(-starty+y);
draging:=false;
end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if draging then
begin

image1.Left:=image1.Left+(-startx+x);
image1.top:=image1.top+(-starty+y);
end;

tylko jest problem bo caly czas przesowany jest image1, a nie te tworzone dynamicznie. Wie ktos jak to poprawic ??

0

type
  TForm1 = class(TForm)
    Button1: TButton;
      (...)
    private
    procedure ImageDynMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  procedure ImageDynMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
 (...)


procedure TForm1.Button1Click(Sender: TObject);
begin
TImage.create(self).name:='obrazek'+IntToStr(licznik);
with TImage(FindComponent('obrazek'+IntToStr(licznik))) do
       begin
         parent:=form1;         height:=25;
         width:=25;
         top:=0; left:=0; picture.loadfromfile('bmp/1.bmp');
         licznik:=licznik+1;
         onMouseMove:=ImageDyn.OnMouseMove;
         onMouseDown:=ImageDyn.OnMouseDown;
      end;
end;

procedure TForm1.ImageDynMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
begin
  startx:=x;
  starty:=y;
end;
end;

procedure TForm1.ImageDynMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if (Shift=[ssLeft]) then
begin
  TImage(Sender).Left:=TImage(Sender).Left+(-startx+x);
  TImage(Sender).top:=TImage(Sender).top+(-starty+y);
end;

Na szybko pisane i po częsci kopiowane wiec mogą byc literówki

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