Gdzie tu jakiekolwiek zaprzeczanie swoim własnym słowom?
Uczepiłem się (przyznaję), jednak napisałeś o dwóch różnych rzeczach - zabezpieczenie przed ustawieniem jednego skrótu dla dwóch funkcji to jedno, a obsługa skrótów to drugie - obsługa (jak sama nazwa wskazuje) to przyporządkowanie danej funkcji (ogólnie algorytmu) do jakiegoś skrótu i po jego zaistnieniu wykonanie tego kodu; Nijak ma się to do Twojego problemu;
Nie piszę w Javie, jednak w OP obsługę skrótów klawiszowych (nie licząc komponentów z właściwością np. Shortcut
jak w TMenuItem
) należałoby zaimplementować w zdarzeniu np. OnKeyDown
formularza, a sprawdzenie poprawności ustawień wykonać np. w zdarzeniu OnChange
komponentu TComboBox
- jak widzisz to dwie zupełnie różne rzeczy;
Dlatego też pytam, czy jest jakiś elegancki sposób, by to osiągnąć, a jeżeli takowy nie istnieje dla pojedynczej akcji przycisku, to czy da się osiągnąć wydajną weryfikację kombinacji inną drogą.
Sprawdzić czy dana kombinacja jest już do jakiejś funkcji przyporządkowana i tak musisz (co najmniej raz) - czy to przy wybieraniu danej kombinacji, czy przy zapisie; Wszystko zależy od tego jaki efekt Cię interesuje;
-
Jeśli użytkownik może ustawić (dajesz mu taką możliwość) taką samą kombinację dla więcej niż jednej funkcji to przy zapisie musisz sprawdzić czy jest wszystko w porządku i jeśli nie - wyświetlić komunikat żeby usunął powtórzenia; Sprawdzasz raz po skończeniu ustawiania;
-
Jeśli użytkownik nie może wybrać (przed zapisem ustawień) dwa razy tej samej kombinacji to przy każdej zmianie pozycji w każdej kontrolce msusisz sprawdzić czy są powtórzenia i jeśli tak - komunikat + przywrócenie poprzedniej pozycji w tej kontrolce; Przy zapisie już sprawdzać nie trzeba, bo cokolwiek by użytkownik nie nawydziwiał to poprawność była sprawdzana na bieżąco;
Podsumowując - albo sprawdzasz na bieżąco i informujesz jeśli jest jakieś powtórzenie (wtedy użytkownik od razu wie, że coś jest nie tak), albo informujesz go tylko przy zapisie ustawień (i tym samym pozwalasz mu tracić czas myśląc, że wszystko ustawił jak należy);
Pierwsza opcja jest na pewno szybsza, bo sprawdzenie poprawności wykonujesz raz, ale użytkownik może się denerwować, że jak wybierał dubla to mu program nie podpowiedział, że dana kombinacja jest już zarezerwowana; Druga opcja jest wolniejsza, bo sprawdza poprawność przy każdej zmianie pozycji każdej kontrolki, za to użytkownik od razu wie czy ustawił dobrze, czy nie; Jednak przy tak małej ilości kombinacji wolałbym wybrać opcję drugą, by użytkownik był informowany na bieżaco o błędnej konfiguracji.