Cześć,
długo się wzbraniałem przed napisaniem tak prostego pytania ale powiem szczerze - zaczynam się poddawać.
Mam program (napisałem go z 10 lat temu) który jest aplikacja POS (kasa komputerowa na ekranie dotykowym). Teraz dołożyłem do niego obsługę terminala płatniczego.
Na formie głównej można sprzedawać artykuły, gdy chcemy podsumować transakcję przechodzimy na nową formę (nazwijmy ją "razem") poprzez proste:
razem.Show;
Na tej formie mamy możliwość wybrania sposobu płatności, udzielenia rabatów zwykłych i jakiś specjalnych (okolicznościowych), oraz najważniejsze, ustalenia sposobu płatności za paragon: karta, talony, gotówka.
Ta forma pojawia się oczywiście z fokusem (załatwia to funkcja Show).
Gdy klient chce zapłacić kartą, kasjer klika na przycisk "Karta" i otwiera się nowa forma na której widać komunikaty z biblioteki dll od terminala. Ta forma także jest z fokusem bo otwierana jest za pomocą instrukcji Show.
Biblioteka terminala podaje komunikaty o swoim statusie poprzez callbacki. Jeśli w callbacku jedna ze zmiennych równa się 0 to oznacza że transakcja się udała (na prawdę jest to ciut bardziej obwarunkowane ale na potrzeby przykładu niech tak zostanie).
Do tego momentu wszystko proste.
No i teraz tak, na formie "razem" jest przycisk "Zakończ" który kończy transakcję (drukuje ją na drukarce fiskalnej oraz uzupełnia dane w tabelach). Po czym zamyka formę "razem" poprzez
razem.Close;
i pokazuje formę główną - nazwijmy ją "sprzedaz" poprzez
sprzedaz.Show;
Po naciśnięciu tego przycisku dzieje się to co napisałem i forma "sprzedaz" pojawia się z fokusem na pole do wpisania kodu kreskowego (załatwia to zdarzenie onShow tej formy), oczywiście forma jest aktywna!
A teraz najlepsze, jak callback z dll-ki odpowie że transakcja jest zaakceptowana to po prostu klika na przycisk "zakończ" na formie razem poprzez proste
razem.btnzakoncz.Click;
i już. Wszystko się wykonuje prawidłowo, paragon się drukuje, dane w tabelach są zapisywane, formy ukrywają się i pojawia się forma "sprzedaż" ale bez aktywności!
Jest to problem bo kasjer najczęściej używa skanera kodów kreskowych a bez aktywnej formy dane nigdzie nie są przekazywane? Rozwiązanie to kliknięcie na formę ale oni o tym non stop zapominają - i dobrze bo to ja zawalam sprawę.
Powiedzcie mi - co z tym zrobić?
Jakiekolwiek sugestie będą mile widziane :)
Acha, program napisany w Delphi 6 lata temu jak już wspomniałem - ledwie źródła znalazłem :).
Pozdrawiam
Robert