Potrzbuję napisać algorytm, który sprawdzi pozycję kursora w komponencie TEdit
i usunie znak stojący po jego prawej stronie.
Zrobiłem swoje menu podręczne dla tej kontrolki, ale nie mogę za pierona znaleźć sposobu na zrobienie obsługi klawisza Delete
, mienowicie w momencie, gdy SelText
jest różny od pustego łańcucha lub SelLength
jest większy od 0
, usuwam tylko zaznaczony tekst przez przypisanie do niego pustego łańcucha (SelText := ''
). Ale co, jeśli brak zaznaczonego tekstu? Potrzebuję usunąć znak po kursorze, ale nie wiem jak odczytać pozycję kursora;
Próbowałem zasymulować dla obydwu przypadków wciśnięcie klawisza Delete
, ale funkcja keybd_event
powodowała problemy...
W sieci znalazłem kilka przykładów jak obejść taką sytuację, ale głównie chodziło o prowadzenie indeksu kursora przez utworzenie zmiennej liczbowej, a później sprawdzanie wartości klawisza (w zdarzeniu OnKeyDown
) i na jego podstawie modyfikowanie wartości tej zmiennej. Zbyt wiele kombinowania jak na tak banalną sprawę, a do tego wykluczona zostaje obsługa myszki...
Czy zna ktoś sposób na ręczne usuwanie znaku po prawej stronie kursora? Może wie ktoś w jaki sposób edytowana jest zawartość kontrolki w standardowym menu podręczym? Zasada jest taka sama dla wszystkich kontrolek tekstowych (jak TMemo
, TEdit
, TSpinEdit
).
Kiedyś wiedziałem jak się to robi, ale zapomniałem i na dodatek nie mam źródła ze stosowanym wcześniej kodem. Bardzo proszę o jakieś wskazówki.