procedura w dynamicznie tworzonym komponencie

0

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...

0

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;
0

tzn ja chce zeby moj image, stworzony dynamicznie, mial procedure Form1.Image???MouseMove... procedura jest taka sama dla wszystkich imagow...

0

nazwa_komponentu.zdarzenie := nazwa_procedury;

0

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

0

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'

0

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.

0

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ć.

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