Hmmm, po kolei postaram się wszystko wyjaśnić.
Jest klasa: TCzytnik (która posługuje się ComPortem).
Klasa ta ma zdarzenie: OnCzytnikRead.
TCzytnikRead = procedure(Sender: TObject; Str: string) of object;
Przypisanie:
Czytnik.OnCzytnikRead:=MyProc;
Czytnik to zmienna globalna(w całej aplikacji) klasy TCzytnik
powoduje wykonanie procedury MyProc po odczytaniu danych przez czytnik(port). Dane nie są w trakcie czytania, tylko już wszystkie są zczytane i "przekazane" do aplikacji
Teraz mam tą klasę: TNewTransForm - jest to forma z gridem, kilkoma metodami i takie tam.
M.in. jest w tej klasie metoda prywatna
procedure CzytnikRead(Sender: TObject; Str: string);
a także zmienna:
FIDKlienta: integer;
Następnie w OnShow klasy TNewTransForm mam przypisanie:
Czytnik.OnCzytnikRead:=CzytnikRead;
To przypisanie mam również w OnActivate
Do rzeczy.
Podczas działania programu tworzę kilka obiektów klasy TNewTransForm(każdy z innym FIDKlienta)
Jednak, gdy do metody CzytnikRead dodam
showMessage(intToStr(FIDKlienta));
to niezależnie od tego, która forma jest aktywna, pokazywane jest ID klienta, przypisanego do pierwszego utworzonego obiektu(IDKlienta jest na pewno różne w każdym obiekcie).
Wniosek z tego taki, że wszystkie te obiekty wskazują na jedną metodę CzytnikRead. A tak być nie może.