Слушай, nesco, надоело мне шаманить со своими кодами....
Обновишь чего-нибудь, а через месяц поймаешь...
Предложение КОНКРЕТНО такое:
1) В INI-файлах убрать св-во KeyPreview из MainForm и SimpleForm. Убрать метод doKeyBack из MainForm, SimpleForm и Memo. И поместить их (особаченное свойство KeyPreview и метод doKeyBack) в файлы WinControl.INI и SimpleWinControl.INI.
2) В кодах - убрать из Memo реализацию _work_doKeyBack. За ненадобностью.
Все абсолютно просто, и безобидно. И сто раз проверено.
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
| ||
Голосовали: | Tad |
Разработчик
Ответов: 26194
Рейтинг: 2136
|
|||
Galkov, а можно хоть какой-то тестовый примерчик, чтобы проверить правильность переноса
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
А что проверять-то ты хочешь, nesco
![]() Если КОД НЕ МЕНЯЕТСЯ. ВАБЩЕ. Весь функционал, как уже сказано, сделан сто лет назад. Еще ДО появления поля Inherit в INI-файлах. Расположен в Win.pas И во всех контролах активно работает. Потому-что, даже если пользователю не дали (шаманством в INI файлах) изменить KeyPreview -- так он устанавливается в TRUE в конструкторе (Win) по дефолту. А до внедрения этого функционала (вроде, ты должен помнить), события onKeyDown на MainForm не возникали, если один из дочерних контролов оказывался в фокусе. Я же тебе говорю, что если KeyPreview работает в MainForm - значит будет работать и в других контролах. Если doKeyBack работает в Memo - значит, ровно также, будет работать во всех остальных. Ошибок компиляции же нет. И ничего никуда не переносится - оно с самого зарождения там стоит. Просто, правильно было бы - разрешить пользоваться функционалом, который есть. Без рукосуйства ![]() Существо предложения в этом и состоит: убрать необходимость рукосуйства, коль скоро потребуется этот функционал. И при этом: Все абсолютно просто, и безобидно. И сто раз проверено. ------------ Дoбавленo в 09.06: Ну, и если честно, само свойство KeyPreview предназначено было (мною) не для того, чтобы запретить owner-у перехватывать клавиатуру дочерней формы (MainForm.KeyPreview=False). А для того, чтобы на форме (или панели) можно было перехватить/запретить клавиши с трех Edit-ов, а с Memo -- не перехватывать. На этих трех Edit-ах KeyPreview=True, а на Memo - KeyPreview=False. К примеру, конечно же. И что в проверке-то - и не нуждается. Сто раз проверено... |
|||
карма: 9 |
| ||
Голосовали: | Konst |
Разработчик
Ответов: 26194
Рейтинг: 2136
|
|||
Перенес
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
УРА
![]() ------------ Дoбавленo в 18.25: Ну вот... Мелочь, а приятно
И все это - "без единой строчки кода" ![]() |
|||
карма: 9 |
|
5