Как сделать красивые кнопки в делфи

Добавил пользователь Alex
Обновлено: 10.09.2024

Школа программирования Delphi

Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.

Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте.
DelphiSchool

В прошлом уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 1. Свойства кнопки, мы рассмотрели основные свойства кнопки, и теперь пришло время рассмотреть события кнопки в Delphi и написать свой первый код программы. В конце статьи, если вам что-нибудь останется не понятным, вы можете скачать исходник Delphi и наглядно посмотреть где и как прописан код программы и как она работает.
Давайте откроем созданный нами ранее проект MyFistButton (File | Open | файл MyFistButton.dpr). Выделяем кнопку SendButton и переходим на вкладку Events (События), которая находится в окне объектного инспектора.Как мы уже знаем, за щелчок клавиши мыши отвечает событие OnClick. Поэтому давайте найдем это событие и дважды кликнем на нем левой кнопкой мыши. Delphi создает в редакторе кода процедуру – обработчик события OnClick.По умолчанию этой процедуре присваивается имя в виде имени компонента (в нашем случае имени нашей кнопки SendButton) плюс имя события без приставки On. Таким образом имя нашей процедуры будет SendButtonClick, а созданная Delphi процедура будет выглядеть так:

procedureTForm1.SendButtonClick(Sender: TObject);
begin

В объектном инспекторе, напротив события OnClick также появляется имя процедуры обработчика. Мы можем изменить это имя на любое другое, или же выбрать имя из ниспадающего списка. Но в нашем случае в ниспадающем списке ничего нет, так как мы ничего еще не делали, и похожих обработчиков события у нас нет.



Рисунок. Объектный инспектор в котором отображена процедура обработчика

Давайте теперь создадим обработчик события для кнопки CloseButton. Делаем все так же как и делали для кнопки SendButton, только внутри процедуры напишем команду Close:


Теперь, если мы запустим программу, сделаем кнопку "Закрыть приложение" активной и нажмем на нее, то программа закроется.
Close – это метод формы, поэтому мы могли бы написать немного по другому:

Между первым и вторым примером нет абсолютно никакой разницы.

Если в этом уроке вам что-нибудь не понятно, то ниже вы можете скачать исходник Delphi и наглядно посмотреть где и как прописан код программы и как она работает.

К уроку (статье) Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки
Нажмите на эту ссылку Ссылка

Не забывайте писать свои отзывы об уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки. Ваша информация об уроке Delphi и TButton. Учимся работать с кнопкой в Delphi. Часть 2. События кнопки может помочь другим людям изучить программирование на Delphi. Также не забывайте проставлять рейтинг урока, ведь от этого зависит его попадание в список лучших уроков Delphi

Кнопки являются элементами управления и служат для выдачи команд на выполнение определенных функциональных действий. Существует несколько видов кнопок в Delphi:

Основным для кнопки событием является событие OnClick, возникающее при ее нажатии.

Свойство Default , если его установить в true, определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе. Правда, если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки сработает именно кнопка в фокусе.

Кнопка с рисунком отличается от стандартной кнопки тем, что кроме заголовка на кнопке может отобразиться растровое изображение.

Свойство Glyph определяет растровый рисунок кнопки (формат bmp). По умолчанию кнопка не содержит рисунок. Delphi поставляется большое количество изображений для кнопок. Они расположены в каталоге ImagesButtons, а сам каталог Images расположен в каталоге program filescommon filesborland shared.

Расположение изображения и надписи на кнопке определяется свойствами Margin , Layout и Spacing . Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения но отношению к надписи определяется свойством Layout , которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphТор (вверху), blGlyphBottom (внизу). Если же Margin > 0 , то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей, заданное значением Margin .

Свойство Spacing задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4 . Если задать Spacing = 0 , изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1 , то текст появится посередине между изображением и краем кнопки.

Еще одно свойство BitBtn – свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom – заказная. Но можно установить и множество других предопределенных типов: bkOK , bkCancel , bkHelp , bkYes , bkNo , bkClose , bkAbort , bkRetry , bkIgnore , bkAll . В этих типах уже сделаны соответствующие надписи, введены пиктограммы, заданы еще некоторые свойства.

Кнопки SpeedButton имеют возможность отображения пиктограмм и могут использоваться как обычные управляющие кнопки. Обычно они используются в качестве быстрых кнопок, дублирующих различные команды меню, и в инструментальных панелях, в которых требуется фиксация нажатого состояния.

У кнопок SpeedButton , как и у других кнопок, имеется свойство Caption – надпись, но в этих кнопках оно обычно оставляется пустым, так как вместо надписи используется пиктограмма.

Изображение на кнопке задается свойством Glyph . И точно так же свойство NumGlyphs определяет число используемых пиктограмм, свойства Layout и Margin определяют расположение изображения, а свойство Spacing – расстояние между изображением и надписью.

Кнопка может использоваться как переключатель. Поэтому, кроме обычного и нажатого состояний, она имеет третье состояние – утопленное, или выбранное (включенное). Включена кнопка или нет, определяет свойство Down (значение true – кнопка выбрана).

Все быстрые кнопки объединяются в группы. Принадлежность кнопки к группе определяет свойство GroupIndex. По умолчанию свойство имеет нулевое значение, и кнопка не относится к группе.

Если кнопка не входит в группу, то она не может работать как переключатель и находится в выбранном состоянии. Если есть несколько кнопок, имеющих одинаковое ненулевое значение GroupIndex , то они образуют группу взаимосвязанных кнопок из которых нажатой может быть только одна. Если одна кнопка находится в нажатом состоянии и пользователь щелкает на другой, то первая кнопка освобождается, а вторая фиксируется в нажатом состоянии. Поведение нажатой кнопки при щелчке на ней зависит от значения свойства AllowAllUp . Если оно равно true , то кнопка освободится, поскольку в этом случае возможно состояние, когда все кнопки группы отжаты. Если же AllowAllUp равно false , то щелчок на нажатой кнопке не приведет к изменению вида кнопки.

Если Grouplndex > 0 и AllowAllUp (разрешение отжатого состояния всех кнопок группы ) = true , то кнопка при щелчке пользователя на ней погружается и остается в нажатом состоянии. При повторном щелчке пользователя на кнопке она освобождается и переходит в нормальное состояние.


Оглавление

Приведённый ознакомительный фрагмент книги Программирование в Delphi. Трюки и эффекты предоставлен нашим книжным партнёром — компанией ЛитРес.

• Привлечение внимания к приложению

• Окно приложения

• Полупрозрачные окна

• Окна и кнопки нестандартной формы

• Немного о перемещении окон

• Масштабирование окон

• Добавление команды в системное меню окна

• Отображение формы поверх других окон

Привлечение внимания к приложению

Начнем с простых примеров, позволяющих привлечь внимание пользователя к определенному окну приложения. Это может пригодиться в различных ситуациях: начиная от необходимости уведомления пользователя об ошибке программы и заканчивая простой сигнализацией ему, какое окно в данный момент времени ожидает пользовательского ввода.

Инверсия заголовка окна

Вероятно, вы не раз могли наблюдать, как некоторые приложения после выполнения длительной операции или при возникновении ошибки как бы подмигивают. При этом меняется цвет кнопки приложения на Панели задач, а состояние открытого окна меняется с активного на неактивное. Такой эффект легко достижим при использовании API-функции FlashWindow или ее усовершенствованного, но более сложного варианта — функции FlashWindowEx.

Примечание

Здесь сказано, что функции изменяют цвет кнопки приложения на Панели задач. Однако этого не происходит при выполнении приведенных ниже примеров. Почему так получается и как это изменить, рассказано в следующем разделе этой главы (стр. 15).

Первая из этих функций позволяет один раз изменить состояние заголовка окна и кнопки на Панели задач (листинг 1.1).

procedure TForm1.cmbFlashOnceClick(Sender: TObject);

Как видите, функция принимает дескриптор нужного окна и параметр (тип BOOL) инверсии. Если значение флага равно T rue, то состояние заголовка окна изменяется на противоположное (из активного становится неактивным и наоборот). Если значение флага равно False, то состояние заголовка окна дважды меняет свое состояние, то есть восстанавливает свое первоначальное значение (активно или неактивно).

Более сложная функция FlashWindowEx в качестве дополнительного параметра (кроме дескриптора окна) принимает структуру FLASHWINFO, заполняя поля которой можно настроить параметры мигания кнопки приложения и/или заголовка окна.

В табл. 1.1 приведено описание полей структуры FLASHWINFO.


Значение параметра dwFlags формируется из приведенных ниже флагов с использованием операции побитового ИЛИ:

• FLASHW_CAPTION — инвертирует состояние заголовка окна;

• FLASHW_TRAY — заставляет мигать кнопку на Панели задач;

• FLASHW_ALL — сочетание FLASHW_CAPTION и FLASHW_TRAY;

• FLASHW_TIMER — периодически измененяет состояния заголовка окна и/или кнопки на Панели задач до того момента, пока функция FlashWindowEx не будет вызвана с флагом FLASHW_STOP;

• FLASHW_TIMERNOFG — периодически измененяет состояния заголовка окна и/или кнопки на Панели задач до тех пор, пока окно не станет активным;

• FLASHW_STOP — восстанавливает исходное состояние окна и кнопки на Панели задач.

Далее приведены два примера использования функции FlashWindowEx.

В первом примере состояние заголовка окна и кнопки на Панели задач изменяется десять раз в течение двух секунд (листинг 1.2).

procedure TForm1.cmbInverse10TimesClick(Sender: TObject);

fl.dwFlags:= FLASHW_CAPTION or FLASHW_TRAY; //аналогично FLASHW_ALL

Второй пример демонстрирует использование флагов FLASHW_TIMER и FLASHW_ STOP для инверсии заголовка окна в течение заданного промежутка времени (листинг 1.3).

//Запуск процесса периодической инверсии заголовка

procedure TForm1.cmbFlashFor4SecClick(Sender: TObject);

fl.dwFlags:= FLASHW_ALL or FLASHW_TIMER;

//Остановка инверсии и заголовка

procedure TForm1.Timer1Timer(Sender: TObject);

В данном примере используется таймер, срабатывающий каждые четыре секунды. Таймер первоначально неактивен. Конечно, можно было бы не использовать его, а просто посчитать количество инверсий, совершаемых в течение требуемого интервала времени (в данном случае четырех секунд) и задать его в поле uCount. Но приведенный пример предназначен именно для демонстрации использования флагов FLASHW_TIMER и FLASHW_STOP.

Теперь рассмотрим другой, гораздо более гибкий способ привлечения внимания к окну приложения. Он базируется на использовании API-функции SetForegroundWindow. Данная функция принимает один единственный параметр — дескриптор окна. Если выполняется ряд условий, то окно в заданным дескриптором будет выведено на передний план, и пользовательский ввод будет направлен в это окно. Функция возвращает нулевое значение, если не удалось сделать окно активным.

В приведенном ниже примере окно активизируется при каждом срабатывании таймера (листинг 1.4).

procedure TForm1.Timer1Timer(Sender: TObject);

В операционных системах старше Windows 95 и Windows NT 4.0 введен ряд ограничений на действие функции SetForegroundWindow. Приведенный выше пример как раз и является одним из случаев недружественного использования активизации окна — но это всего лишь пример.

Чтобы активизировать окно, процесс не должен быть фоновым либо должен иметь право устанавливать активное окно, назначенное ему другим процессом с таким правом, и т. д. Все возможные нюансы в пределах одного трюка рассматривать не имеет смысла. Стоит отметить, что в случае, когда окно не может быть активизировано, автоматически вызывается функция FlashWindow для окна приложения (эта функция заставляет мигать кнопку приложения на Панели задач). Поэтому даже при возникновении ошибки при вызове функции SetForegroundWindow приложение, нуждающееся во внимании, не останется незамеченным.

Обратите внимание на то, что название приложения, указанное на кнопке, расположенной на Панели задач, совпадает в названием проекта (можно установить на вкладке Application окна Project options, вызываемого командой меню Project ? Options). Но это название не совпадает с заголовком главной формы приложения. Взгляните на приведенный ниже код, который можно найти в DPR-файле (несущественная часть опущена).

В конструкторе класса TApplication, экземпляром которого является глобальная переменная Application (ее объявление находится в модуле Forms), происходит неявное создание главного окна приложения. Заголовок именно этого окна отображается на Панели задач (кстати, этот заголовок можно также изменить с помощью свойства Title объекта Application). Дескриптор главного окна приложения можно получить с помощью свойства Handle объекта Application.

Главное окно приложения делается невидимым (оно имеет нулевую высоту и ширину), чтобы создавалась иллюзия его отсутствия и можно было считать, что главной является именно форма, создаваемая первой.

Для подтверждения вышесказанного можно отобразить главное окно приложения, используя следующий код (листинг 1.5).

procedure TForm1.Button1Click(Sender: TObject);

SetWindowPos(Application.Handle, 0, 0, 0, 200, 100,

SWP_NOZORDER or SWP_NOMOVE);

В результате использования этого кода ширина окна станет равной 200, а высота 100, и вы сможете посмотреть на главное окно. Кстати, можно заметить, что при активизации этого окна (например, щелчке кнопкой мыши на заголовке) фокус ввода немедленно передается созданной первой, то есть главной, форме.

Теперь должно стать понятно, почему не мигала кнопка приложения при применении функций FlashWindow или FlashWindowEx к главной форме приложения. Недостаток этот теперь можно легко устранить, например, следующим образом (листинг 1.6).

procedure TForm1.Button2Click(Sender: TObject);

В данном случае одновременно инвертируется и заголовок окна приложения. Убедиться в этом можно, предварительно выполнив код листинга 1.5. Наконец, чтобы добиться одновременного мигания кнопки приложения на Панели задач и заголовка формы (произвольной, а не только главной), можно выполнить следующий код (листинг 1.7).

Что касается Delphi XE2, то теперь помимо простых приложений VCL Application нам стали доступны следующие виды приложений:

  • FireMonkey HD Application – 2D-приложение
  • FireMonkey 3D Application – приложение с 3D-графикой
  • FireMonkey HD iOS Application – 2D-приложение приложение для iOS
  • FireMonkey 3D iOS Application – 3D-приложение приложение для iOS

Следуя простому правилу “Не знаешь как работать с 2D-графикой – не суйся в 3D” я решил вначале посмотреть, что представляет из себя HD Application. А раз у меня нет iPad’а (я на него только коплю =)), то приложение будем создавать для Windows.

Итак, запускаем Delphi XE2, создаем новый проект: “File -> New -> FireMonkey HD Application“. Всё, что можно заметить сразу после создания нового проекта – это немного изменившийся вид главного окна в дизайнере и, на первый взгляд, чуть-чуть другой состав палитры компонентов. То есть при создании VCL Application IDE выглядит так:

А при создании FireMonkey HD Application – вот так:

Но это только на первый взгляд. В действительности же все намного сложнее, если копать глубже. Например, если посмотреть модуль в котором содержится класс TButton для VCL-приложения, то мы увидим Vcl.StdCtrls (или просто StdCtrls для Delphi XE и ниже), а описание того же TButton для FireMonkey содержится уже в FMX.Controls. И всё, что роднит две казалось бы одинаковые кнопки – это только родительский класс TComponent – дальше всё другое. И эти отличия Вы почувствуете сразу же как только бросите кнопку на форму и посмотрите в Object Inspector.

FireMonkey по сравнению со старой доброй VCL дает нам на порядок больше возможностей для разработки красивых интерфейсов, создания анимации и т.д.

Вот, к примеру, возьмем туже кнопку TButton и прикинем сколько нам надо написать кода, чтобы при наведении курсора мыши на кнопку она меняла свою высоту, а после того как курсор будет убран высота бы возвращалась к своему первоначальному значению и при этом анимация была бы плавной, с небольшой задержкой? Задача, на самом деле простенькая, но как говориться, “время – деньги” и хотелось бы сделать такую анимацию максимально быстро. С FireMonkey для решения этой задачи Вам даже не придется писать для этого какой-либо код – всё можно сделать, используя Object Inspector. Смотрите.

2. Переходим в Object Inspector и находим свойство Height. Можете заметить, что по-мимо того, что рядом с этим свойством появился новый значок, показывающий, что для свойства можно определить какой-либо эффект, также в Object Inspector’e появился и список выбора в котором можно выбрать вид анимации:

3. Выбираем в списке первый тип анимации – “Create New TFloatAnimation” и задаем в Object Inspector следующие значения свойств анимации:

4. Жмем F9 и любуемся только что созданной анимацией. При наведении курсора мыши на кнопку высота кнопки плавно изменяется пока не достигнет значения 50 пикселей, а после того как курсор убран высота кнопки с той же задержкой возвращается в первоначальное значение. И никакого кода. В запущенном приложение кнопка будет вести себя вот так:

На создание такой анимации у меня ушло чуть больше времени, чем длится выше представленный видео-ролик. Теперь разберемся, что мы сделали.

Во-первых, стоит отметить, что все элементы управления в FireMonkey (FMX) – это контейнеры, т.е. в любой компонент FMX можно встроить другой. И эту особенность FireMonkey Вы могли легко заметить, когда создавали свою “живую” кнопку:


Здесь мы создали для TButton новый дочерний компонент – анимацию. Никто вам не запретит, если захотите, взять и встроить в кнопку TButton вторую надпись в виде TLabel или хоть TPaenel. Такая вот интересная особенность.

Во-вторых, что касается свойств анимации. Для анимации TFloatAnimation можно использовать следующие свойства:

  • AnimationType – определяет тип воспроизведения анимации.
  • AutoReverse – определяет будет ли анимация воспроизводится автоматически в обратную сторону, когда значение свойства достигнет своего конечного значения (StopValue)
  • Delay – задержка в секундах после которой начнется воспроизведение анимации
  • Duration – продолжительность анимации в секундах.
  • Interpolation – тип интерполяции, используемой для расчёта промежуточных значений свойства. Для простых анимаций достаточно линейной интерполяции (itLinear)
  • Inverse – определяет будет ли анимация воспроизводиться в обратном направлении
  • Loop – определяет будет ли анимация зациклена.
  • PropertyName – имя свойства для которого применяется анимация
  • StartFromCurrent – определяет будет ли анимация воспроизводиться с текущего значения свойства или от заданного в StartValue
  • StartValue и StopValue – начальное и конечное значение свойства.
  • Trigger – событие после которого запустится процесс анимации
  • TriggerInverse – событие после которого анимация пройдет в обратном направлении.

TFloatAnimation – это самый широко используемый в FireMonkey тип анимации. Достаточно посмотреть на другие свойства элементов управления, поддающиеся анимации, чтобы убедиться в этом. Однако этот тип анимации не единственный. На вкладке Animations палитры компонентов Вы можете найти ещё несколько типов анимации для Ваших приложений. Например, можно сделать плавное изменение цвета какого-либо элемента на форме, используя TColorAnimation. Ниже представлен небольшой видео-ролик, демонстрирующий применение TColorAnimation для компонента TCalloutRectangle:

Анимацию для цвета я задал зацикленную, т.е. свойство Loop выставлено в значение True, а свойства Trigger и TriggerInverse оставил пустыми.

Кроме анимаций Вы также можете применять также для своих элементов на форме различные эффекты типа размытия, тени и т.д. Например, на рисунке ниже показан элемент TCalloutRectangle с наложенным на него эффектом тени:


И даже более того – для эффектов Вы также можете создавать различные информации =) В общем возможностей создать красивый и интерфейс приложения – масса.

Ну и в заключении пара слов про стили. Как вы могли заметить, в представленных выше роликах форма приложения выглядит ровно так какой мы её видели в VCL. В Delphi XE2 для приложений VCL Applications стали доступны стили оформления, которые можно настроить, например, выбрав в меню Project – Options – Application – Apperance. Выбор стиля выглядит так:

Так вот, FireMonkey дает намного больше возможностей по изменению стиля приложения, чем при использовании обычной VCL. В силу того, что каждый элемент в FireMonkey – это контейнер, мы в силах самостоятельно изменить стиль отрисовки любой части элемента – бордюра, заднего фона, выбрать толщину рамки и т.д. Всё это можно сделать, используя, опять же визуальный редактор. Для примера изменим задний фон для формы. Наши действия будут следующими:


Чтобы загрузить стиль по умолчанию необходимо нажать кнопку Load Default. Теперь самое интересное. Каждый элемент в дереве стиля определят стиль для какой-либо части компонента. Например, за стиль кнопки отвечает элемент buttonstyle за задний фон элемента – backgroundstyle и т.д.

4. Для цвета формы выбираем в дереве backgroundstyle и в Object Inspector изменяем цвет, например, на красный.


Чтобы указать какому-либо элементу его уникальный стиль, ему необходимо указать значение свойства StyleLookup. К примеру, Вы можете применить тот же стиль backgroundstyle для кнопки или вообще создать свою уникальную кнопку используя элементы с вкладок Shapes, Layouts, Animations и Effects палитры компонентов.

Резюмируя все вышесказанное, можно сказать, что FireMonkey – это достаточно удобный фреймворк для создания красивых, информативных и удобных приложений – хотите создавайте элементы управления с анимацией, хотите – с эффектами, которые срабатывают по какому-либо событию, полностью перерисовывайте стиль оформления компонентов и т.д. На ряду с этим FireMonkey достаточно прост в использовании – можно строить красивый интерфейс приложения не написав ни одной строчки кода (хотя никто не запрещает вам, если необходимо – делать тоже самое в коде приложения).

Не буду лукавить и скажу, что по ходу написания статьи я также столкнулся и с некоторыми проблемами в работе. Например, не всегда удавалось с первого раза открыть дизайнер стиля у TStyleBook. Мелочь, но тем не менее присутствует. Или в случае с анимацией мне так и не удалось повесить нормально на эффект TShadow анимацию TFloatAnimation – вроде бы и срабатывает анимация, но только не по событию, а только в зацикленном режиме. Были найдены и другие проблемы о которых разработчики писали в своих блогах и на форумах. Однако не стоит забывать, что FireMonkey ещё не исполнилось и 1 месяца и, если эта платформа приживется (а я очень на это надеюсь), то в ближайшем будущем мы увидим обновления и платформа станет ещё мощнее и удобнее в использовании.

Книжная полка

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.

Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.

Описание: Книга рассчитана на подготовленного пользователя ПК, желающего самостоятельно научиться программировать и разрабатывать приложения и базы данных в среде Delphi. Опытные программисты смогут использовать издание как справочник. В тексте подробно описаны более 80 компонентов VCL, функции Object Pascal и Win32 API.

Описание: Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.

Читайте также: