i TEdit i na zdarzeniu TEdit.OnChange wyświetlam nową formę
I jeszcze taka jedna uwaga/sugestia. Wprawdzie nie dotyczy bezpośrednio problemu, z którym się zgłosiłeś, ale warto o tym wspomnieć.
Niestety, wielu programistów Delphi (i ogólnie - technologii "wyklikiwanych") ma tendencję do wrzucania logiki aplikacji do zdarzeń OnCoś-tam. I to jest błąd.
Zasadniczo - powinna być osobna funkcja, która odpowiada za wykonanie określonych czynności. A w odpowiedzi na TEdit.OnChange jedynie wywołujesz tę funkcję i nic więcej nie robisz.
Dlaczego?
- co, jeśli za jakiś czas zmienisz kontrolkę - z
TEdit1 na TEdit2 albo w ogóle na kontrolkę innego typu?
- co, jeśli będziesz chciał wykonać akcję otwarcia kartoteki towaru z innego poziomu, niż reakcja na czytnik kodów?
- separacja logiki od elementów na formatce dotyczy także wartości/zmiennych, na których operujesz. Złe jest przetwarzanie bezpośrednio wartości
Edit1.Text, zamiast tego ta wartość powinna zostać odczytana i przypisana do jakiejś zmiennej, albo przekazana jako parametr do funkcji ją przetwarzającej
W większości skanerów można zdefiniować dodatkowy znak doklejany na końcu odczytanego kodu np. #13.
A potem ktoś podepnie inny skaner - bo się zepsuł i używamy tymczasowego, bo wymiana sprzętu, bo w innym dziale jest skaner, który nie umożliwia konfiguracji terminowania ciągu i zaczną się cuda - tu działa, tam nie działa, nikt nie wie o co chodzi, trzeba coś zmieniać w ustawieniach skanera albo w aplikacji (albo opcja do konfiguracji, albo rekompilacja). Także - pomysł fajny, ale ja osobiście nie polecam iść w tym kierunku, bo jeśli można obejść to inaczej, to nie stwarzajmy sytuacji, które mogą generować potencjalne problemy.