Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

По наклонной

Статьи » Тексты » По наклонной

Многие текстовые редакторы и даже некоторые электронные таблицы — не буду говорить какие, сами догадайтесь — позволяют вводить текст не только горизонтально, но и под некоторым углом. Привыкнув к подобной свободе действий, пользователь Дельфи с недоумением убеждается, что привычная вольница невозможна: текст везде, где можно его разместить — например, метка или канва формы — располагается параллельно земной поверхности. Однако такое впечатление обманчиво. Я попытаюсь рассказать, каким образом можно получать наклонный текст в Делфях. Правда, я не знаю, зачем это может быть нужно, кроме как для хохмы ради.

Подобный трюк может быть совершен с любым объектом, у которого есть Canvas. В двух словах — мы делаем новый объект типа Tfont, потом изменяем некоторые его свойства, получаем хэндл оного, присваиваем его текущему Теперь подробнее. Изменение фонта с обычного на наклонный можнофонту истязаемого элемента, а потом можем уже и заняться разрисовыванием.


Теперь подробнее. Изменение фонта с обычного на наклонный можно привязывать к разным событиям. То ли вы рассматриваемую процедуру навесите на кнопочку, и все случится по нажатию, то ли вы прикрепите в событие OnShow формы, и изменение фонта произойдет сразу же, как только форма появится на экране, — дело хозяйское, не важно. Тот кусок кода, который с последующими комментариями я приведу ниже, я прицепила на кнопочку (Button4), принадлежащую форме Form1.

Вначале мы объявляем переменные типа Tfont и TlogFont. Если первая понятна и знакома (тип шрифта), то тип номер два нам в диковинку. На странице http://www.vbapi.com/ref/l/logfont.html нам подробно и дотошно поясняют, что это структура, хранящая информацию о логическом шрифте. Кстати, сам сайт http://www.vbapi.com весьма рекомендую как подробный и толковый.

В теле самой процедуры вначале устанавливается текущий шрифт формы — наименование и размер. Обращаю внимание на наименование шрифта — оный должен быть не иначе как True Type.Затем создаем объект типа шрифта и присваиваем ему значение — при помощи команды Assign требуем, чтобы новый шрифт был таким же, как и текущий шрифт формы.

Теперь начинаем заполнять структуру типа TlogFont. Величины lfEscapement и lfOrientation должны быть равны между собой и равны углу отклонения от базовой линии фонта. Измеряется угол в десятых долях градуса. После установки угла перерисовываем параметры из основного фонта формы в тот, который мы заполняем. В принципе, эти операторы можно и пропустить, просто привожу их на тот случай, если кому вдруг пригодится. В операторе IF определяем, жирный у нас будет шрифт или нет. Вариантов, на самом деле, куда больше — тонкий, очень жирный и т. д. Параметры lfItalic и lfUnderline, по-моему, понятны — они описывают наклонность и подчеркнутость. LfStrikeOut — это перечеркнутость. LfCharSet'ов имеется великое множество — от нашего русского до арабского и еврейского. Правда, последние доступны только в Винде 2000 и NT.

После указания параметров мы создаем шрифт с помощью функции CreateFontIndirect (http://www.vbapi.com/ref/l/../c/createfontindirect.html), специально предназначенной для создания шрифта согласно заранее установленным свойствам — структуре, которую мы только что заполнили. Эта функция возвращает хэндл фонта, который мы немедленно присваиваем хэндлу нашей переменной типа Tfont. Потом при помощи команды Assign мы утверждаем, что шрифт канвы формы будет таким же, как фонт, только что созданный нами, и окрашиваем его в выбранный цвет — команда color. Переменную Fnt освобождаем — она вспомогательная и, наконец, при помощи функции TextOut выводим надпись «Super!» в точке канвы формы с координатами (30,60). Эта функция даже в хелпе по Делфи есть.

Столь специфической проблеме, как ни странно, посвящено много страниц в Интернете. В основном они содержат пример программы безо всяких объяснений или с минимальными ремарками. Вот несколько адресов навскидку — http://www.scalabium.com/faq/dct0002.htm, http://www.latiumsoftware.com/en/delphi/00046.php3, http://members.nbci.com/jescott/DelphiCodeTips1.html, http://members.truepath.com/delphi/tips/tip114_anglefont1.htm, http://www.hitekdev.com/delphi/rotatetext.html, http://www.jpl.nu/~magnus/delphiqa/articles/0149.html, http://www.multimania.com/offset/inform/inform.html.

Последняя страничка вообще-то на французском, но там так мало текста и так много кода, что данный факт совершенно не смущает. Тем более что приведенный там пример — самый простой и удачный.

Источник - http://www.mycomp.com.ua

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com