Мне это порядком надоело - решил сделать Helper для TMessage (попутно и для TMsg). Ну и в планах попробовать сделать Debugger Visualizer.
Однако о самом хелпере я постараюсь написать в следующий раз. В этой заметке хочу описать, как можно использовать кнопочки Record Macro и Playback Macro, которые находятся в левом нижнем углу строки состояния редактора кода.
Итак, я хочу получить код вида:
case Msg of WM_NULL: Result := 'WM_NULL'; WM_CREATE: Result := 'WM_CREATE'; ... WM_APP: Result := 'WM_APP'; end;
Идём в модуль Messages и копируем оттуда код:
{$EXTERNALSYM WM_NULL} WM_NULL = $0000; {$EXTERNALSYM WM_CREATE} WM_CREATE = $0001; ... {$EXTERNALSYM WM_APP} WM_APP = $8000;
Вставляем в новый модуль и начинаем макрос. По шагам:
- Нажимаю Ctrl+F (Панель поиска), указываю пробел, снимаю все флажки. Enter - чтобы запомнилось.
- Устанавливаю курсор на первой строке, нажимаю "Record Macro":.
- Ctrl+Y - удаляем строку
- Ctrl+Вправо - курсор к началу идентификатора
- F3 - поиск до пробела
- Влево - курсор к концу идентификатора
- Ctrl+Shift+Влево - выделили идентификатор
- Ctrl+C - скопировали выделенное в буфер обмена
- Повторяем 5. и 6. - курсор к концу идентификатора
- Shift+End - выделение до конца строки
- Delete - удаляем выделенное
- Набираем на клавиатуре
: Result := ' - Ctrl+V - вставили скопированное
- Набираем на клавиатуре
'; - Home - переход к началу строки
- Вниз - переход к следующей строке
- Нажимаю "Stop Recording Macro":.
4 коммент.:
А все потому что это WinAPI ущербное. Сколько можно уже к нему заплатки и костыли лепить?
Я не против САБЖа, я в курсе что если WinAPI используешь, то вот приходится извращаться. Я к тому, что МБ возможно перестать им пользоваться? - в делфи нет альтернативы? (я не вкурсе, я на крестах пишу так-то...).
> WinAPI ущербное
Ну это Вы погорячились...
> в делфи нет альтернативы?
Альтернатива есть - начиная с Delphi XE2 есть платформа FM (оно же FireMonkey или FMX). Её принципиальное отличие от VCL как раз именно в том, что оно не привязано к API Windows - мультиплатформенное оно: и под WindowsOS, и под MacOS, и под iOS, и под Android.
> Ну это Вы погорячились...
Но оно морально устарело. Исключения не кидаются. Любая функция обработки сообщений превращается в антипаттерн, по всему коду разбрасываются switch-и. Ну вот банально вместо кодов типа WM_CREATE передавай элементы перечисления и проблемы автоматически не будет (и еще один костыль в виде "Helper для TMessage" не будет нужен).
Внутри то оно может как угодно работать. Я о том пишу, что с тех пор, как я начал использовать обертки этого API, про то, что внутри я вспоминаю как про страшный сон ))
"Я не против САБЖа, я в курсе что если WinAPI используешь, то вот приходится извращаться. Я к тому, что МБ возможно перестать им пользоваться? - в делфи нет альтернативы? (я не вкурсе, я на крестах пишу так-то...)."
В делфи есть прекрасная альтернатива - VCL называется. Но Николай как раз ее и отлаживает.
Отправить комментарий