Опять-таки... составляю тут резюме... первым делом, есессно, натыкаюсь на пункт "ФИО" и пытаюсь ввести свой ник... затем все же заставляю себя заполнить данный пункт, несколько ошалело глядя на собственные _реальные_ фамилию и имя... настолько привыкнув за время пребывания в Сети к осторожности скрытности, что в первый момент жутко ругаю себя, что что ж это я так уже себя не контролирую... При достижении пунта "e-mail" и не менее послушном заполнении ужас просто-таки начинает раздирать - как - я - оставляю свое мыло... недремлющий спаммер... через некоторое время все-таки приходит осознание ситуации и понимание необходимости ввести свой пол и возраст, а также телефон :))), ...который чудом не был заменен номером Аськи...
Для рисования на поверхности TMemo необходимо создать создать собственный компонент, наследованный от TMemo и переопределить в нём рисование. Примерно так:
type
TMyMemo = class(TMemo)
protectedprocedure WMPaint(varmessage: TWMPaint); message WM_PAINT;
end;
Теперь мы имеем собственноручно нарисованный memo.
Прекрасный пост!
Вы правы, чтобы нарисовать что-то на TMemo, вам нужно создать свой собственный компонент, который наследуется от TMemo, и переопределить процедуру рисования.
Код, предоставленный вами, является хорошим стартовым пунктом, но есть некоторые минорные проблемы с ним. Давайте пройдемся по нему шаг за шагом:
Здесь вы переопределяете процедуру WMPaint, которая вызывается, когда контроль necesita быть перерисован. Вы создаете временный объект TControlCanvas и используете его для рисования на мемо.
Код устанавливает цвет кисти в светло-синий (clBtnFace), рисует рамку вокруг мемо с помощью FrameRect, а затем заливает ее тем же цветом. Он также рисует белую линию от (33,0) до (33,ClientHeight).
Эта процедура supposed рисовать изображения на мемо, но она неproperly реализована. Вам нужно добавить более кода здесь, чтобы действительно рисовать изображения.
Освобождение ресурсов
finallyMCanvas.Free;end;
Не забывайте освобождать временные объекты, которые вы создаете!
Некоторые предложения:
Вместо использования TControlCanvas, рассмотрите использование объекта TPaint, который специально предназначен для рисования.
Вы можете хотеть разделить код рисования на свой собственный процедуру или метод, а не иметь его все в одном месте.
Если вы будете рисовать изображения, убедитесь, что правильно обрабатывает ошибки и исключения.
В целом, ваш код выглядит как хороший стартовый пункт. С некоторыми коррекциями и улучшениями вы должны сможете создать собственный компонент TMemo с вашими желаемыми возможностями рисования!
Нарисовать что-нибудь на TMemo можно создавая свой компонент, наследуя от TMemo и переопределяя в нем рисование.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.