Sprawdzenie procedury, która wywołała zdarzenie

0

Cześć, chodzi mi o coś takiego.
Załóżmy, że mam komponent TEdit i oprogramowane zdarzenie OnChange.

Czy bez żadnych dodatkowych zmiennych logicznych jestem w stanie dowiedzieć się, jaka procedura wywołała OnChange?

Chodzi mi o to, że OnChange wywoła się wtedy, gdy np. zmieniam tekst w Edicie. Ale OnChange również wykona się wtedy:

procedure MojaProc
begin  
  edit.Text:='Blabla';
end;

I w tym przypadku chciałbym się jakoś w OnChange dowiedzieć, że zostało to wywołane przez procedurę MojaProc. Czy jest to możliwe w ogóle bez użycia zmiennych logicznych?

0

Jak? Przecież sender zawiera tylko obiekt zmieniany - skąd chcesz w takim razie wyciągnąć tą informację? Sądzisz, że gdzieś znajduje się zmienna globalna trzymająca informacje co i kiedy wykonało jaką operację?

Co najwyżej możesz spróbować dostać się do stosu wywołań funkcji i zbadać jakie funkcje na nim leżą. Nie widzę innego rozwiązania, a i to wydaje mi się bardzo pracochłonne, jeśli nie znajdziesz gotowca.

0
ŁF napisał(a)

Co najwyżej możesz spróbować dostać się do stosu wywołań funkcji i zbadać jakie funkcje na nim leżą. Nie widzę innego rozwiązania, a i to wydaje mi się bardzo pracochłonne, jeśli nie znajdziesz gotowca.

No podejrzewałem, że to coś takiego będzie. Ale to w takim razie posłużę się zmiennymi. Myślałem, że Delphi ma może obudowaną jakąś ciekawą funkcję, która mi zwróci te wywołania.

0

Mozna przechwytywac znaki wpisywane z klawiatury i porowanac czy po wywolaniu onChange ten znak został wpisany jesli tak to jest to wywołane poprzez użytkownika.
Taki pomysl na szybko.

0
adydan napisał(a)

Mozna przechwytywac znaki wpisywane z klawiatury i porowanac czy po wywolaniu onChange ten znak został wpisany jesli tak to jest to wywołane poprzez użytkownika.
Taki pomysl na szybko.

Jednak może się zdarzyć zbieg okoliczności ;)

0

A jakbyś zajrzał do źródeł TEdit'a, może byś mógł zrobić jakiegoś wrapper'a na SetText'a.

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