Witajcie, chcę zrobić formularz z dwoma polami Edit, do których będą wpisywane liczby rzeczywiste i jedno pole Edit na wyniki.
Napisałem procedurę sprawdzającą poprawność danych i wykonującą pewne działania arytmetyczne na podstawie danych pobranych z pól Edit. Procedura ta ma być uruchamiana przy zdarzeniu OnExit. Generalnie chodzi o to by zmiana danych w którymkolwiek z pól Edit skutkowała przy zdarzeniu OnExit aktualizacją wyniku.
Wszystkie pola zdefiniowane są w klasie
TForm1 = class(TForm)
i tak pola Edit zadeklarowane są jako
Edit_1_x: TEdit;
Edit_2_y: TEdit;
natomiast procedury zdarzeniowe
procedure Edit_1_xExit(Sender: TObject);
procedure Edit_2_yExit(Sender: TObject);
Właśnie w powyższej procedurze chcę zagnieździć procedurę Oblicz sprawdzającą poprawność danych i wykonującą działania arytmetyczne.
Procedurę zadeklarowałem w klasie TForm1 jako
procedure Oblicz
a jej wywołanie umieściłem w procedurach Edit_1_xExit, Edit_2_yExit.
Jednak teraz procedura zagnieżdżona nie widzi pól Edit na formularzu. Wywołanie typu:
x := StrToFloat(Edit_1_x.Text); y := StrToFloat(Edit_2_y.Text);
nie widzi pól Edit_1_x, Edit_2_y.
I tu moje pytania:
- Czy procedura zagnieżdżona Oblicz jest dobrze zadeklarowana?
- Czy odwołanie do pól formularza z poziomu zagnieżdżonej procedury nie powinny być realizowane w inny sposób? Wskaźniki?
- Czy zamiast procedury nie powinna być użyta funkcja?
- Może ktoś ma sugestie jak rozwiązać ten problem?
Pytania wynikają oczywiście z braków w mojej wiedzy. Proszę chociaż o wskazanie kierunku poszukiwania rozwiązania.