chcialbym dynamicznie tworzyc image i zeby mialy od razu zdefiniowane imagemousemove.. jak to zrobic. tak zebym nie musial pisac po 200 razy tej samej procedury zwiekszajac tylko numer imaga...
Każdemu komponentowi wstawiaj jakąś liczbę do właściwości Tag i przypisz WSZYSTKIM jedną procedurę, w której zrób taki coś:
case TComponent(Sender).Tag of
1:...;
2:...;
...
end;
tzn ja chce zeby moj image, stworzony dynamicznie, mial procedure Form1.Image???MouseMove... procedura jest taka sama dla wszystkich imagow...
nazwa_komponentu.zdarzenie := nazwa_procedury;
nazwa_komponentu.zdarzenie := nazwa_procedury;
Ale jeśli masz faktycznie dużo image'ow to:
var
i: integer
begin
for i:=0 to componentCount-1 do
begin
if components[i] is TImage then (components[i] as TImage).OnClick:=KlikNaImage;
end;
end;
wtedy Ci przyporządkuje procedurkę KlikNaImage do zdarzenia onClick wszystkich komponentów TImage
procedure ruchmyszyimage(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
TImage(Sender).BeginDrag(FALSE);
end;
................
image.OnMouseMove:= ruchmyszyimage;
i wyskakuje:
Incompatible types: 'method pointer and regular procedure'
Najpierw tam gdzie jest
TForm1 = class(TForm)
dajesz :
procedure ruchmyszyimage(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Potem wszystko jak napisałeś, tylko tam gdzie definiujesz procedurę to tak :
procedure TForm1.ruchmyszyimage(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//blabla treść procedury
end;
I u mnie tak działa.
procedurka 'ruchmyszyimage' powinna byc deklarowana w sekcji 'public'. Mozna ją zdeklarowac w TForm1, ale mozna też zadeklarować oddzielny objekt lub klasę zawierająca sekcję "public" z nagłówkiem tej procedury.
Coś takiego powinno zadziałać.