Dynamiczne dodanie zdarzeń

0

Mam problem. Piszę sobie funkcję, która dynamicznie tworzy formę i komponenty na niej. Wszystko szło dobrze do czasu pojawienia się problemu z dynamicznym dodaniem zdarzeń do przycisków. Chodzi o to, żeby to było napisane w dość przyzwoity (skondesowany do minimum) sposób. Z góry dzięki za pomoc.

0

W zasadzie problem jest banalny :d .

  1. ustalasz jakiego typu jest właściwość (zdarzenie) którą chcesz obsłużyć, np. zdarzenie komponent.onclick jest typu TNotifyEvent
  2. piszesz własną procedurę z własną nazwą, która musi zawierać odpowiednie parametry, np. procedura typu TNotifyEvent musi zawierać parametr Sender:TObject. (lepiej będzie gdy procedura będzie zadeklarowana w klasie Tform1)
  3. przyporządkowujesz swoją procedurę do właściwości komponent.onXXX, np.:
procedure TForm1.MojaProceduraOnClick(Sender:TObject);
begin
   //co ma się stać po kliknięciu
end;

DynamicznieTworzonyKomponent.OnClick:=MojaProceduraOnClick;
0

Tyle to ja wiedziałem, chodzi o to, żeby w tych zdarzeniach można było przekazać Result i zamknąć formę utworzoną w funkcji. Można to zrobić przez zmienną globalną, ale dlatego pytam, może nie trzeba tak kombinować.

0

Nie bardzo wiem co właściwie chcesz zrobić - własne okienko dialogowe oparte na TForm? Nie widzę innej możliwości jak przerobić tą funkcję na klasę. :|

0

Możesz zrobić tak. W funkcji pokazującej zamiast Show daj ShowModal (funkcja zatrzyma się aż do zamknięcia okna), zaś w zdarzeniu przycisku odpowiednio ustaw zmienną wewnętrzną tej formatki. No i wtedy w funkcji wywołującej zwracasz wartość tej zmiennej. Inaczej chyba się nie da.

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