Html внутри delphi приложения


Html внутри delphi приложения

Здравствуйте уважаемые эксперты.
У меня есть HTML-файл,считанный в строку.
Мне требуется отобразить его в своём приложении, не сохраняя файл
на диск.Компонент TWebBrouser не подходит-он требует сохранения в
файл.Подскажите какой-нибудь компонент.

С поиском компонент, не сюда.

В факе есть пример отображения страницы в webbrowser не сохраняя на диск.

procedure TForm1.Button1Click(Sender: TObject);
var
s: WideString;
begin
s:=» Hello World! Hello World!

Delphi с интерфейсом HTML/CSS

Я хочу разработать приложение delphi с графическим пользовательским интерфейсом HTML/CSS, не обязательно запускаясь из веб-браузера. Я хочу сделать это, создавая более богатый графический интерфейс пользователя с анимацией и т.д. И оторваться от обычных компонентов VCL/Windows. Какие-либо предложения?

В одном из моих приложений у меня встроенный браузер, и я реализовал интерфейс IDocHostUIHandler. Это позволяет мне подвергать объект COM с помощью метода GetExternal. У меня просто есть объект COM, который предоставляет методы и свойства моего приложения, что делает их доступными для веб-страниц, размещенных внутри встроенного браузера.

Таким образом, script на моих веб-страницах имеет такие строки, как «external.DoSomething()» и «i = external.GetThisValue()». Так, например, за кнопками onclick events вы можете запустить метод вашего приложения (реализовать в основной форме, в самом COM-объекте или что угодно).

На этом сайте есть много информации о встраивании браузера в приложение Delphi: http://www.delph >

Конечно, это может быть громоздким, чтобы реализовать много этого, и во многих случаях есть, вероятно, лучшие варианты. Но для моей конкретной цели я могу предложить «домашнюю страницу», которую можно легко изменить, чтобы изменить ее макет, посмотреть и даже разоблачить больше (или меньше) функциональности, как того требует я или мои пользователи.

HTML и CSS не будут доставлять вам анимации или Rich User Interface. Далек от этого. Наоборот. Вам нужно будет инвестировать средства в набор инструментов, чтобы обеспечить такую ​​функциональность и почти наверняка включать JavaScript. И даже если вы не хотите, чтобы ваше потенциальное приложение размещалось в веб-браузере, ваше приложение само по себе должно будет разместить веб-браузер, чтобы отобразить ваш интерфейс HTML/CSS/JavaScript, и вам будет гораздо труднее подключить ваш GUI для вашей логики приложения (если вы действительно не используете архитектуру веб-приложения).

Delphi (или любой другой язык разработки приложений Windows, если на то пошло) значительно увеличивает вас, намного дальше по пути к более простому, эффективному и быстро реализованному Rich User Interface, чем HTML или CSS.

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

Также имейте в виду, что когда кто-то использует приложение Windows, он ожидает, что он будет выглядеть и вести себя определенным образом в значительной степени. Использование причудливой веб-парадигмы в настольном приложении просто ради этого может смутить и расстроить пользователей, если их занять слишком далеко.

Я все для пользовательских интерфейсов, нарушающих соглашение, где он ведет к более интуитивно понятному пользовательскому интерфейсу, но просто быть «красивее» не обязательно ведет в этом направлении и так же ошибочен, как и догматически придерживаясь конвенции.

HTML/CSS предлагает некоторые приятные функции, которые (еще не?) доступны в Delphi и VCL. Они также являются хорошей отправной точкой для программирования клиент/сервер, разделение пользовательского интерфейса и бизнес-логики является ключевым фактором здесь.

Одна популярная библиотека для Delphi — это проект extpascal:

ExtPascal — это Object Pascal (Delphi, FreePascal/Lazarus) обертка/переплет для Ext JS, полный графический интерфейс Ajax рамки, сделанные в JavaScript, для Богатое интернет-приложение (RIA) развитие. ExtPascal позволяет использовать Ext JS из команд Object Pascal выданный сервером. Это приносит структура и строгий синтаксис Object Pascal для программирования веб-страниц браузер. ExtPascal перенесет Draw2d в будущие выпуски.

Пример генератора HTML-страниц

В примере выполняется формирование статического HTML-документа, аналогичного документу из параграфа «Статическая публикация». Однако здесь генерация документа происходит с использованием стандартных компонентов Delphi.

В форме находятся четыре кнопки с именами GenPageProducer, GenDataSetPageProducer, GenTableProducer, GenQueryTableProducer, предназначенные для генерации HTML-документа с помо-щью размещенных в форме компонентов PageProducer, DataSetPageProducer, DataSetTableProducer и QueryTableProducer, соответственно. Для отображения сформированной HTML-страницы в обозрева-теле предназначена кнопка с именем ShowHtml. В форме также размещены многострочный редактор Memo1 и наборы данных Table1 и Query1.

В качестве источника данных для компонентов DataSetPageProducer и GenTableProducer используется набор данных Table1, связанный с этими компонентами через их свойство Dataset.

В качестве значения свойства HTMLDoc компонента PageProducer установлен следующий текст:

Демонстрация возможностей PageProducer

Эта страница демонстрирует возможности PageProducer

Имя базы данных

При формировании HTML-документа (методом Content) теги-транспаранты и в этом шаблоне будут заменены на конкретные значения.

Значением свойства HTMLDoc компонента DataSetPageProducer является следующий текст:

Данные из файла

Данные из файла

Данные первой записи из БД

Здесь теги-транспаранты , , , , и при формировании HTML-документа также будут заменены на конкретные значения полей БД.

В качестве источника данных для компонента QueryTableProducer используется набор данных Query1, связанный с этим компонентом через свойство Dataset последнего. Свойству SQL объекта Query1, используемому для хранения SQL-запроса к БД, необходимо задать значение, которое обеспечит получение требуемых данных. В рассматриваемом примере свойство SQL объекта Query1 содержит следующий запрос:

SELECT * FROM Authors WHERE YearBorn > 1960

Ниже приведен код модуля DBHForm главной формы HTMLForm приложения:

SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, DBCtrls,

StdCtrls, DBTables, ExtCtrls, Mask, Db, Dialogs, HTTPApp, DSProd, DBWeb;

procedure FormCreate(Sender: TObject);

procedure GenPageProducerClick(Sender: TObject);

procedure GenDataPageProducerClick(Sender: TObject);

procedure GenTableProducerClick(Sender: TObject);

procedure GenQueryTableProducerClick(Sender: TObject);

procedure ShowHtmlClick(Sender: TObject);

procedure DataSetPageProducer1HTMLTag(Sender: TObject; Tag: TTag;

const TagString: String; TagParams: TStrAngs; var ReplaceText: Strings);

procedure PageProducer1HTMLTag(Sender: TObject; Tag: TTag;

const TagString: String; TagParams: TStrings; var ReplaceText: String);


procedure DataSetTableProducer1FormatCell(Sender: TObject;

CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;

var Align: THTMLAlign; var VAlign: THTMLVAlign;

var CustomAttrs, CellData: String);

procedure THTMLForm.FormCreate(Sender: TObject);

// Инициализация наборов данных

procedure THTMLForm.ShowHtmlClick(Sender: TObject);

// Сохранение сгенерированного HTML-документа

// Загрузка HTML-документа в обозреватель

ShellExecute (Handle, ‘open’, PChar(‘htmltest.htm’), ‘ », ‘ ‘, sw_ShowNormal);

// Генерация HTML-страницы компонента PageProducer

procedure THTMLForm.GenPageProducerClick(Sender: TObject);

// Генерация HTML-страницы компонента DataSetPageProducer

procedure THTMLForm.GenDataSetPageProducerClick(Sender: TObject);

// Генерация HTML-страницы компонента TablePageProducer

procedure THTMLForm.GenTableProducerClick(Sender: TObject);

// Генерация HTML-страницы компонента QueryTableProducer

procedure THTMLForm.GenQueryTableProducerClick(Sender: ТОbject);

// Обработка события OnHTMLTag компонента PageProducer1,

// используемая для замены тегов-транспарантов

procedure THTMLForm.PageProducer1HTMLTag (Sender: TObject; Tag: TTag;

const TagString: String; TagParams: TStrings; var ReplaceText: String);

if TagString = ‘dbname’

then ReplaceText := Table1.TableName

else if TagString = ‘date’ then ReplaceText :== DateToStr(Date);

// Обработка события OnHTMLTag компонента DataSetPageProducer1,

// используемая для замены тегов-транспарантов

procedure THTMLForm.DataSetPageProducer1HTMLTag(Sender: TObject; Tag: TTag;

const TagString: String; TagParams: TStrings; var ReplaceText: String);

if TagString = ‘dbname’

then ReplaceText := Table1.TableName

else if TagString = ‘date’ then ReplaceText := DateToStr(Date);

// Замена тегов , , , на значения

// соответствующих полей текущей записи БД производится автоматически

// Обработка события OnFormatCell компонента DataSetTableProducer1

procedure THTMLForm.DataSetTableProducer1FormatCell(Sender: TObject;

CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;

var Align: THTMLAlign; var VAlign: THTMLVAlign;

var CustomAttrs, CellData: String);

if CellColumn > 2

then CellData := ‘ ‘ + CellData + ‘ ‘;

if Length(CellData) > 2

then CellData := ‘ ‘ + CellData + ‘ ‘;

then BgColor := ‘silver’;

Инициализация наборов данных Table1 и Query1 осуществляется в процедуре FormCreate. Псевдоним Authors используется для связи набора данных Query1 с БД, входящей в состав учебника по ASP-страницам, устанавливаемого вместе с операционной системой Windows 2000 Server. Этот псевдоним необходимо создать самостоятельно с помощью Администратора источников данных ODBC, установив связь псевдонима Authors с указанной БД. Названный Администратор входит в состав утилит Панели управления операционной системы.

Для формирования HTML-документа с использованием компонента PageProducer предназначена кнопка GenPageProducer. Вид полученного HTML-документа в окне обозревателя показан на рис 4.4.

Рис. 4.4. HTML-страница, сгенерированная с помощью компонента PageProducer


HTML-страница содержит статический текст, состоящий из имени таблицы БД и строки с обозначением текущего времени. Страница формируется при вызове метода Content, при этом гене-рируется событие OnHTMLTag и выполняется его обработчик (процедура PageProducer1HTMLTag). В коде обработчика происходит замена тегов-транспарантов на значения имени таблицы БД и текущего времени, осуществляемая на основании анализа шаблона HTML-документа:

if TagString = ‘dbname’

then ReplaceText := Table1.TableName

else if TagString = ‘date’ then ReplaceText := DateToStr(Date);

Здесь параметр TagString обработчика задает имя тега, при обработке которого произошло событие OnHTMLTag, а параметр ReplaceText содержит текст, на который заменяется тег.

Формирование HTML-документа с использованием компонента DataSetPageProducer, обращающе-гося к данным компонента Table1, происходит при нажатии кнопки GenDataSetPageProducer. Вид полученного HTML-документа в окне обозревателя показан на рис. 4.5.

Рис. 4.5. HTML-страница, полученная с использованием компонента DataSetPageProducer

На этой странице выводится информация из первой записи БД. Для установки указателя на первую запись используется метод First набора данных Table1.

В процессе генерации HTML-документа возникает событие OnHTMLTag. Обработчик этого события для компонента DataSetTableProducer в основном совпадает с обработчиком аналогичного события рассмотренного выше компонента PageProducer, однако замена специальных тегов, имеющих имена, совпадающие с именами соответствующих полей таблицы БД, на значения этих полей производится автоматически.

Для формирования HTML-документа с помощью компонента DataSetTableProducer предназначена кнопка GenTableProducer. Вид полученного HTML-документа в окне обозревателя показан на рис. 4.6.

Рис. 4.6. HTML-страница, полученная с использованием компонента DataSetTableProducer

Показанный HTML-документ содержит данные таблицы БД, находящиеся в файле Animals.dbf. Формирование документа выполняется вызовом метода Content компонента DataSetTableProducer. При генерации HTML-документа используются параметры, установленные в Редакторе столбцов. При форматировании каждой ячейки таблицы возникает событие OnFormatCell, в обработчике которого редактируются параметры отображения.

В рассматриваемом примере форматирование заключается в следующем:

· устанавливается шестой размер шрифта для ячеек четвертого и следующих столбцов таблицы:

· устанавливается полужирный шрифт для ячеек, размер содержимого которых превышает 2:

· для строк, начиная с 6-й, задается серебристый цвет фона:

Для формирования HTML-документа с помощью компонента QueryTableProducer используется кнопка GenQueryTableProducer. Компонент QueryTableProducer отличается от DataSetTableProducer тем, что для получения данных применяется набор данных Query, а не Table. Вид сгенерированного HTML-документа в окне обозревателя показан на рис. 4.7.

Рис. 4.7. HTML-страница, полученная с использованием компонента QueryTableProducer

В приведенном HTML-документе содержатся записи из таблицы Authors, отбор которых обеспечивает компонент Query1. Его SQL-запрос выбирает записи, для которых значение года превышает 1960.

Перейдем теперь к описанию динамической публикации, которая, как уже говорилось, используется для БД, обновляемых в реальном масштабе времени. Примером таких БД являются интернет-магазины, информационные системы в крупных сетях интранет и т. д.

DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

Справочная система для приложения в Delphi: Использование HTML Help Workshop

Подготовить HTML-файл можно и при помощи HTML-редактора, входящего а состав HTML Help Workshop. Однако для этого надо знать хотя бы основы HTML — языка гипертекстовой разметки (далее приведены краткие сведения об HTML, которых достаточно для того, чтобы создать вполне приличную справочную систему).

Основы HTML

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

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

Илон Маск рекомендует:  Что такое код domelement >set_attribute_node

В табл. 14.2 представлен минимальный набор тегов, используя которые можно подготовить HTML-файл с целью дальнейшего его преобразования в СНМ-файл справочной системы.

Таблица 14.2. HTML-теги

Набирается HTML-текст обычным образом. Тега можно набирать как прописными, так и строчными буквами. Однако, чтобы лучше была видна структура документа, рекомендуется записывать все теги строчными (большими) буквами. Следующее, на что надо обратить внимание — программы отображения HTML-документов игнорируют «лишние» пробелы и другие «невидимые» символы (табуляция, новая строка). Это значит, что для того, чтобы фрагмент документа начинался с новой строки, в конце предыдущей строки надо поставить тег , а чтобы между строками текста появилась пустая строка, в HTML-текст нужно вставить два тега подряд. Работая с HTML-редактором в программе HTML Help Workshop, в процессе набора HTML-текста можно увидеть, как будет выглядеть набираемый текст. Для этого надо из меню View выбрать команду In Browser или щелкнуть на командной кнопке, на которой изображен стандартный значок Internet Explorer. В качестве примера на рис. 14.25 приведен текст одного из разделов справочной системы программы Квадратное уравнение.

Рис. 14.25. HTML-текст раздела справочной системы

HTML5 Builder глазами Delphi-разработчика.

До 2013 года остается всего ничего и после бурного празднования Нового Года нас ожидает, если и не сюрприз, то явно важное событие — выход Embarcadero MobileStudio. Продукта, в котором в будущем будут сосредоточены все возможности по разработке нативных приложений под различные мобильные платформы. На начало 2013 года, мы можем рассчитывать на то, что сможем разрабатывать приложения под iOS, следующим в списке стоит Andro >

Сам HTML5 Builder был установлен у меня ещё с тех пор как на рынок вышла RAD Studio XE3, но запустить и тем более попробовать его продукт в работе меня сподвиг вебинар Всеволода Леонова и Андрея Совцова, который я обнаружил в записи на YouTube. Посмотрел, немного удивился, скачал Update 1 к HTML5 Builder, установил и начал вникать.

Итак, что у меня есть в наличие для работы:

  1. Браузер Chrome 23.0.1271.97 m
  2. Смартфон HTC Desire S (Android 2.3.5)
  3. HTML5 Builder (update 1)
  4. Клавиатура, мышь и все такое прочее.

Цель — разработать приложение под Android 2.3.5., используя возможности рассматриваемого продукта.

Несколько моментов по установке

Начну свое повествование с главного — установки необходимого программного обеспечения. Так как для сборки приложения я не буду использовать сервис PhoneGap (HTML5 Builder может собирать приложения прямо в облаке), то для разработки под Android нам необходимо будет, как минимум, установить Android SDK с необходимыми API. Разработчики билдера облегчили нам эту задачу, поэтому, в случае чего, в архиве с установщиком HTML5 Builder имеется специальный файл — android-setup.exe.

И здесь надо отметить несколько моментов, которые стоит иметь в виду перед тем как начать разрабатывать свои Android-приложения:

Иначе, при сборке проекта Вы можете обнаружить, что HTML5 Builder не нашел какой-либо необходимый для работы bat-ник или exe-шник из SDK.

Иначе при сборке проекта будут доноситься крики об ошибках типа » [javac] cannot find symbol…», «не могу найти ….», т.к. в API 2.x отсутствуют многие классы, которые сейчас широко используются не только в HTML5 Builder, но и вообще при разработке под Android.

После того, как все необходимые компоненты и утилиты будут установлены, у нас будут в распоряжении:

Знакомство с IDE. «Hello, world!» снова с нами.

Запускаем HTML5 Builder и видим следующую картинку:

Страница приветствия в HTML5 Builder

После Delphi XE3 выглядит не привычно, но к такому внешнему виду приложения, выполненному в черных тонах, довольно быстро привыкаешь. Разработчики этого продукта пошли по пути «лучше меньше да лучше» поэтому в HTML5 Builder’е все элементы управления расположены очень компактно, используется минимум модальных окон, а место в окне по максимуму выделяется на рабочую область — редактор кода и дизайнер.


Переходим в меню на пункт «New» и нам на выбор предлагается один из четырех видов проектов:

Выбор типа проекта

  1. Client Mobile Application — мобильное приложение, основанное на клиентских web-технологиях (html, javaScript, CSS). Такое приложение может работать без доступа к каким-либо сетевым ресурсам и вообще не требует подключения к Интернет.
  2. Client Web Application — практически тоже самое, что и предыдущие проект, также использует клиентские веб-технологии, но уже «заточен» под использование в десктопных браузерах
  3. Server Mobile Application — для работы этого приложения уже требуется сервер. Согласно описанию, подобные проекты также можно разворачивать на мобильных устройствах.
  4. Server Web Application — такой проект разворачивается на серверах. Это, в общем-то, обычный сайт, использующий те же jQuery, HTML5, CSS с PHP.

Я решил разрабатывать Client Mobile Application. После выбора соответствующего пункта, HTML5 Builder стал загружать необходимые компоненты и библиотеки:

Загрузка необходимых компонентов

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

После загрузки билдер примет вот такой вид:

Размер формы нашего будущего приложения не меняется и соответствует выбранной в списке модели устройства. Подложка (картинка с телефоном) позволяет более чётко представить себе как будет выглядеть наше приложение на реальном устройстве. Само же окно программы выглядит вполне себе привычно — структура проекта (Structure) находится сверху слева, Object Inspector — снизу слева, панель компонентов — справа. Тут даже особенно и привыкать не нужно.

Итак, у меня смартфон имеет следующие характеристики экрана:

  • Диагональ 3.7 дюйма
  • Размер изображения 480×800
  • Число пикселов на дюйм (PPI) 252
  • Автоматический поворот экрана есть

Создадим новую запись в списке доступных устройств. Выбираем в списке пункт «Add New device…»:

Создание нового типа устройства

В открывшемся окне задаем необходимые параметры устройства:

Параметры экрана HTC Desire S

Жмем «Ок» и выбираем в списке только что созданное устройство. Так как подложки у меня нет, то окно HTML Builder станет таким:

HTML5 Builder готов к разработке под HTC Desire S

Теперь можно приступать к работе над приложением. Для первого раза я решил повторить пример из «Get Started». Итак в Tool Pallete выбираем вкладку Mobile, и бросаем на форму три компонента:

Я расположил эти компоненты следующим образом:

Расположение компонентов на форме

Сразу же выбираем кнопку и выставляем в Object Inspector:
ButtonType = btNormal
Далее выполняем действие, которое мы сотни и тысячи раз выполняли при работе в Delphi — двойной клик мышкой по кнопке. Откроется редактор кода с уже созданным скелетом обработчика клика по кнопке:

В обработчике кода пишем всего одну строку:

Если Вы не просто скопировали код в редактор, писали его сами, то могли заметить, что у HTML5 Builder также имеются подсказки по методам:

Подсказки по методам

Теперь мы можем проверить наше приложение в действии. Для этого в верхнем меню жмем кнопку «Run Without Debugging«. Запуститься браузер и на новой вкладке появится наша страничка с полем ввода, кнопочкой и меткой:

Кнопка жмется, в метке текст выводится, в общем все как и задумывалось. Теперь посмотрим как это же самое приложение будет выглядеть на моем HTC Desire S.

Deploy to mobile. Разворачиваем приложение на Android-устройстве.

В верхнем меню выбираем пункт «Home», и в боковой менюшке «Deploy to mobile»:

Deploy to mobile

И тут начинается самое интересное — разворачивание приложения на реальном мобильном устройстве. Забегая немного вперед скажу, что развернуть приложение можно двумя способами — через сервис PhoneGap и с использованием локальных утилит (которые мы собственно и устанавливали). Рассмотрим разворачивание приложения вторым способом — с использованием SDK Android Tools. Поэтому на время сворачиваем окно HTML5 Builder в трей и делаем необходимые настройки.

Первое, что надо сделать — это запустить SDK Manager, который вы можете обнаружить в «Пуск»:

Здесь нам необходимо установить USB Driver. Спускаемся в самый низ списка, ставим галку напротив соответствующего пункта меню и устанавливаем драйвер:

Установка USB драйвера

У меня этот драйвер уже установлен, поэтому в столбце Status стоит «Installed».

Теперь настраиваем сам Android-девайс. Заходим в меню «Настройки» —> «Приложения»

и ставим первую галку напротив «Неизвестные источники«, чтобы мы могли устанавливать приложения не из Android Market (Google Play).

В этом же окне настроек спускаемся чуть ниже и заходим в пункт «Разработка«. Здесь можно выставить все три галки: «Отладка USB» (эту ставить обязательно), «Не выключать экран» и «Разрешить фиктивные местоположения«.

Все. Теперь подключаем устройство к компьютеру и Android сообщит нам, что отладка по USB включена:

Возвращаемся в HTML5 Builder. В списке поддерживаемых мобильных ОС выбираем Android и жмем Next:

Выбор мобильной ОС

На втором шаге нас попросят выбрать индексную страницу проекта (Index Page), а также ввести название приложения (Application Name) и компании-разработчика (Company Name):

Здесь мы можем оставить все как есть. Жмем «Next» и переходим к настройке графики приложения. Здесь нам предлагают загрузить три иконки разного размера для нашего приложения. Я решил загрузить одну:

Жмем «Next» и переходим к следующему диалогу- выбор режима компиляции и директории для приложения. До релиза нам ещё далеко, поэтому оставляем «Debug», а в качестве диреткории назначения указываем любую директорию на компьютере куда HTML5 Builder будет записывать необходимые для приложения файлы.

Режим приложения и директория назначения


Снова жмем «Next» и HTML5 Builder скопирует необходимые файлы проекта в заданную на предыдущем шаге директорию, а также создаст недостающие файлы. О всех действиях программы мы можем узнать из лога:

Экспорт необходимых файлов

Снова жмем «Next» и HTML5 Builder задаст вопрос «Как будем собирать: с использованием библиотек SDK или через PhoneGap?»:

Выбор метода сборки приложения

Так как SDK у нас уже есть в наличии, то им мы и воспользуемся. Оставляем на этом кране все как есть (выбран пункт «SDK Library») , жмем «Next» и получаем следующий вопрос:
«Как будем запускать приложение: с эмулятора или с реального устройства?».
Эмулятор нас не интересует, поэтому выбираем второй пункт (Real Device) и жмем «Next»

Выбор способа запуска приложения

И здесь HTML5 Builder запустит необходимый нам компилятор под Android и начнет сборку проекта:

Как можно видеть на скрине весь процесс сборки выводится в лог, поэтому, в случае чего можно будет довольно легко узнать почему приложение не собралось. Как только процесс закончится на Вашем Android-устройстве запуститься приложение HelloWorld . И вот здесь меня ждала печалька — почему-то приложение на телефоне выглядело не так как в дизайнере:

Приложение в дизайнере и на реальном устройстве

С чем связано такое различие — пока не могу сказать. Может это связано с какими-то особенностями моего девайса, может с тем, что все-таки у меня Andro >форс-мажор непредвиденные обстоятельства. Как бы там ни было, но приложение запустилось и заработало — ввел в Edit строку, нажал кнопочку — получил результат.

Заключение

Что можно в целом сказать о работе с HTML5 Builder, какие сделать выводы после первого знакомства с продуктом?

  1. HTML5 Builder имеет дружелюбный интерфейс. Иногда запускаешь какой-нибудь инструмент и долго и упорно «втыкаешь» в то куда надо нажать, какое окошко открыть, какую кнопку ткнуть. А здесь все элементы управления расположены компактно и вполне понятно куда надо нажать, что выбрать и т.д. На освоение с интерфейсом уходит очень мало времени.
  2. С HTML5 Builder’ом можно довольно быстро разрабатывать приложения даже с минимальными познаниями в CSS3 или JavaScript — львиную долю рутинной работы типа записей в css-файл берет на себя инструмент.
  3. HTML5 Builder поддерживает сборку под различные мобильные ОС, что несомненно является очень большим плюсом. Да, то, что собираются веб-приложения накладывает некоторые ограничения как на сам процесс разработки под конкретную мобильную ОС, так и на работу готового приложения. Но в целом разрабатываемые приложения вполне себе имеют право на существование и пренебрегать ими, думаю, особенно не стоит.
Илон Маск рекомендует:  Что такое код msession_create

Немного похвалил инструмент, а теперь также немного и покритикую (в хорошем смысле). Итак, что мне, как Delphi-разработчику, не хватало при работе с HTML5 Builder и, что хотелось бы увидеть в следующей серии версии:

  1. Отладчик JavaScript. Сейчас его в билдере, на сколько я понял, нет. Есть инструменты разработчика (как в Chrome), но, все-таки хотелось бы видеть отладчик по типу Delphi.
  2. После Delphi немного удивляет медленная скорость работы HTML5 Builder. Сами разработчики этого факта не отрицают и, даже объясняют в FAQ почему так происходит, поэтому, будем надеяться, что в следующей версии продукт будет, что называется, «летать» (и не «падать»).
  3. В части работы с БД нет SQLite. DBExpress обзавелся таким драйвером совсем недавно, поэтому будем ждать SQLite в DBRepeater у HTML5 Builder, все-таки для того же Android SQLite занимает далеко не последнее место.

В общем и целом HTML5 Builder мне понравился. Не могу сказать, что я в прямо восторге, но в случае, если вдруг потребуется быстро сварганить небольшое приложение под Андроид, то, с очень большой долей вероятности, я запущу именно этот инструмент.

И в заключение, предлагаю Вам ознакомиться с тем самым вебинаром, который и подтолкнул меня к знакомству с инструментом HTML5 Builder:

Delphi с интерфейсом HTML/CSS

Я хочу разработать приложение delphi с графическим пользовательским интерфейсом HTML/CSS, не обязательно запускаясь из веб-браузера. Я хочу сделать это, создавая более богатый графический интерфейс пользователя с анимацией и т.д. И оторваться от обычных компонентов VCL/Windows. Какие-либо предложения?

В одном из моих приложений у меня встроенный браузер, и я реализовал интерфейс IDocHostUIHandler. Это позволяет мне подвергать объект COM с помощью метода GetExternal. У меня просто есть объект COM, который предоставляет методы и свойства моего приложения, что делает их доступными для веб-страниц, размещенных внутри встроенного браузера.

Таким образом, script на моих веб-страницах имеет такие строки, как «external.DoSomething()» и «i = external.GetThisValue()». Так, например, за кнопками onclick events вы можете запустить метод вашего приложения (реализовать в основной форме, в самом COM-объекте или что угодно).

На этом сайте есть много информации о встраивании браузера в приложение Delphi: http://www.delph >

Конечно, это может быть громоздким, чтобы реализовать много этого, и во многих случаях есть, вероятно, лучшие варианты. Но для моей конкретной цели я могу предложить «домашнюю страницу», которую можно легко изменить, чтобы изменить ее макет, посмотреть и даже разоблачить больше (или меньше) функциональности, как того требует я или мои пользователи.

HTML и CSS не будут доставлять вам анимации или Rich User Interface. Далек от этого. Наоборот. Вам нужно будет инвестировать средства в набор инструментов, чтобы обеспечить такую ​​функциональность и почти наверняка включать JavaScript. И даже если вы не хотите, чтобы ваше потенциальное приложение размещалось в веб-браузере, ваше приложение само по себе должно будет разместить веб-браузер, чтобы отобразить ваш интерфейс HTML/CSS/JavaScript, и вам будет гораздо труднее подключить ваш GUI для вашей логики приложения (если вы действительно не используете архитектуру веб-приложения).

Delphi (или любой другой язык разработки приложений Windows, если на то пошло) значительно увеличивает вас, намного дальше по пути к более простому, эффективному и быстро реализованному Rich User Interface, чем HTML или CSS.

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

Также имейте в виду, что когда кто-то использует приложение Windows, он ожидает, что он будет выглядеть и вести себя определенным образом в значительной степени. Использование причудливой веб-парадигмы в настольном приложении просто ради этого может смутить и расстроить пользователей, если их занять слишком далеко.

Я все для пользовательских интерфейсов, нарушающих соглашение, где он ведет к более интуитивно понятному пользовательскому интерфейсу, но просто быть «красивее» не обязательно ведет в этом направлении и так же ошибочен, как и догматически придерживаясь конвенции.

Веб-страничка внутри Delphi-приложения

WEB страничка внутри Delphi приложения

(Перевод одноимённой статьи с сайта delphi.about.com )

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

Создание HTML страницы

Для начала мы должны создать простую страницу HTML. Для этого можно использовать Ваш любимый HTML редактор, и создать одну страницу с одним изображением. К примеру, назовём этот файл aboutindex.htm. Обратите внимание, что, когда Вы добавляете тэг картинки внутрь htm страницы, то в исходнике страницы будет присутствовать следудующая строка:

Нам необходимо подправить тэг IMG так, чтобы атрибут SRC равнялся имени, которое мы указали в ресурсах:

У меня HTML код выглядит следующим образом:

HTML inside a Delphi exe

This is a HTML Delphi resource test:

Создание и компиляция файла ресурсов

Запомните, что для того, чтобы создать новый скрипт-файл ресурсов, необходимо:

1. Создать новый текстовый файл в директории Вашего проекта.

2. Переименовать его в AHTMLDelphi.rc.

3. Добавить следующие две строки текста в файл AHTMLDelphi.rc.

DELPHIINDEX HTML «c:\Delphi\projects\aboutindex.htm»

ABOUTDP GIF «c:\library\graphics\adp.gif»


Обратите внимание, что «HTML» тип ресурса RT_HTML, определён как «23». Это значение является дефолтовым для протокола RES.

Таким образом мы подготовили одну HTML страницу и одну картинку GIF, которые будут включены в исполняемый EXE модуль.

Следующий шаг — это компиляция .rc файла. Для компиляции файла AHTMLDelphi.rc в файл .res, выполните следующую команду из командной строки (в директории Вашего проекта):

Заключительный шаг — это добавление следующей директивы компилятора в unit Вашего проекта. Следующая строка заставляет компилятор включить в проект файл RES:

Отображение внутри Web браузера

После того, как Вы получите экзешник приложения (назовём его, например, myhtmldelphi.exe), то HTML ресурсы, содержащиеся в нём, могут быть доступны через протокол RES: . Запустите Internet Explorer и, адресной строке напишите следующее:

© DRKB Library, 2009
Разработка и поддержка — Garnet

WEB страничка внутри Delphi приложения

Перевод одноимённой статьи с сайта delphi.about.com

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

Создание HTML страницы

Для начала мы должны создать простую страницу HTML. Для этого можно использовать Ваш любимый HTML редактор, и создать одну страницу с одним изображением. К примеру, назовём этот файл aboutindex.htm. Обратите внимание, что, когда Вы добавляете тэг картинки внутрь htm страницы, то в исходнике страницы будет присутствовать следудующая строка:

Нам необходимо подправить тэг IMG так, чтобы атрибут SRC равнялся имени, которое мы указали в ресурсах:

У меня HTML код выглядит следующим образом:

Создание и компиляция файла ресурсов

Запомните, что для того, чтобы создать новый скрипт-файл ресурсов, необходимо:

  1. Создать новый текстовый файл в директории Вашего проекта.
  2. Переименовать его в AHTMLDelphi.rc.
  3. Добавить следующие две строки текста в файл AHTMLDelphi.rc.

Обратите внимание, что «HTML» тип ресурса RT_HTML, определён как «23». Это значение является дефолтовым для протокола RES.

Таким образом мы подготовили одну HTML страницу и одну картинку GIF, которые будут включены в исполняемый EXE модуль.

Следующий шаг — это компиляция .rc файла. Для компиляции файла AHTMLDelphi.rc в файл .res, выполните следующую команду из командной строки (в директории Вашего проекта):

Заключительный шаг — это добавление следующей директивы компилятора в unit Вашего проекта. Следующая строка заставляет компилятор включить в проект файл RES:

Html внутри delphi приложения

Эпоха web-дизайна, когда наиважнейшим считалось возможность запихнуть на страницу как можно больше графики и поразить пользователя широтой фантазии дизайнера, канула в лету. В моде — информационный дизайн и всяческие удобности для пользователя. Плохим тоном уже считается одно только то, что на сайте нет форума или гостевой книги, и самое ужасное — о, боже — вы до сих пор верстаете каждую страницу вручную, вместо того, что бы поручить сеё скучное и утомительное занятие скрипту.

Время первопроходцев HTML в скором времени закончится и вовсе, и их место займут профессионалы-программисты. Именно программисты, ибо уже в большей степени от их умения создать удобный в использование сайт зависит его успех. Кроме прочего, теперь сайты создают совсем уж как программные продукты: тем кто занят наполнением содержанием, уже может не опасаться запутаться в html, java, cgi и прочих ипостасях интернет-технологий — администрирование сайта становится таким же привычным и удобным, как работа с текстовыми процессорами. Пока, правда, ощущается явный недостаток законченных продуктов, на плечи которых можно было бы возложить все функции по поддержанию сайта в актуальном состоянии, оставив себе лишь вопросы по наполнению его содержанием.

Пока же тяжкое бремя по созданию данных систем, на основе которых будет функционировать сайт, ложится на плечи программистов, только вот-вот успевших изумится возможностями языка Perl или Java. И многие из них, сказать без преувеличения, вышли, словно из гоголевской «Шинели», из Delphi. Действительно, данная среда разработчика, предоставляющая удобный интерфейс для визуального программирования и широкие возможности Object Pascal, столь мила сердцу российских программистов.

Но, похоже, что времена меняются, и Delphi из среды создания обычных настольных приложений, может сгодиться и в другом плане: для написания прикладных web-программ. И действительно, что может быть лучше: уже знакомая среда разработки, вдоль и поперек изученный язык, да и достаточно широкий круг специалистов по программированию в Delphi — это ли не плюсы создания web-приложений на Delphi. Есть конечно и минусы: созданные программы вряд ли смогут удовлетворить тех, кто считает, что лучший web-сервер, это сервер не от Microsoft. Но что поделаешь — версия Delphi под Unix отложена пока до лучших времен. Зато посудите сами: перенос программ в будущем светлом будущем можно будет совершить с малой кровью.

Но отложим пока теорию в сторону, и обратимся к практике. Итак, создание web-приложения в среде Delphi, что называется шаг за шагом.

Пример из учебника

В отличие от прочих аспектов создания приложений в Delphi, о создании приложений для web написано мало. Так ужасающе мало, что из книги в книгу, из учебника в учебник путешествует один и тот же пример. Не будем оригинальничать и мы — чем проще, тем лучше.

Вообще, простейшее web-приложение на Delphi мало чем отличается, а точнее ничем не отличается от создания программы для старой доброй DOS. Это — простейшее консольное приложение, запускаемое на стороне сервера и взаимодействующие с пользователем (в случае необходимости) через броузер.

Создайте в Delphi новый проект — ту самую уже давно забытую всем Console Application. Вы получите знакомый со школьной скамьи, текст обычной паскалевской программы:

Далее еще проще. Организуем вывод кода HTML с помощью команды writeln.

Обратите внимание на строку CONTENT-TYPE: TEXT/HTML, которая определяет описание последующего содержимого, а именно кода HTML. После CONTENT-TYPE: TEXT/HTML, необходимо вывести пустую строку иначе броузер может выдать сообщение об ошибке.

Теперь, когда приложение закончено, осталось его скомпилировать и проверить. Для проверки работоспособности программы вам понадобиться веб-сервер. Можно особо не утруждаться, подойдет любой, даже стандартный домашний веб-сервер от Microsoft. Приложение надо будет разместить в папке публикаций сервера (обычно это — C:\Inetpub\ wwwroot) и запустить сам сервер. Теперь, если вы перейдете по адресу http://localhost/primer.exe в броузере, вы должны увидеть результат действия данной программы — строку Hello, world! Вот и всё, простейшее web-приложение на Delphi готово.

Илон Маск рекомендует:  Что такое код settimer

На самом деле нам бы вряд ли понадобилось Delphi, для создания подобных программ. Конечно, можно генерировать страницы исходя из различных условий, но вопрос в том, как данные условия передать программе. И здесь оказывается не всё так сложно, достаточно вспомнить передачу параметров приложению с помощью командной строки и поступить соответствующе. Хотя это, разумеется, хитрость. Это для приложения Delphi мы оперируем командной строкой, для пользователя же это адресная строка в броузере, то есть url.

Попробуем на примере. Необходимо создать приложение, которое выдает различную информацию (к примеру, время, дату или то и другое вместе) в зависимости от параметров, указанных в адресной строке броузера. Как известно, за данные в параметрах отвечают такие функции, как ParamCount и ParamStr. Их-то мы и будем использовать.

Не правда ли просто? Теперь, если в адресной строке броузера вы наберете, например http://localhost/cg >Данные адреса и параметры можно непосредственно указать в коде HTML и генерировать необходимые изменения на странице либо другие страницы переходя по соответствующим ссылкам.

Следует обратить внимание на то, как передавать данные через url. Знак вопроса отделяет параметр от адреса файла, с помощью знака равенства web-приложению передается значение данного параметра. Так как в адресной строке нельзя использовать пробел, он заменяется на шестнадцатеричный код в таблице ASCII, то есть %20.

Но на самом деле, если некие данные передаются от пользователя web-приложению, то обычно для этого используют формы, а не url (хотя одно другому не мешает). Попробуем и мы создать приложение, которое бы получало данные от пользователя, занесенные им в форму.

Для начала, естественно, нужно создать сам код HTML в котором бы присутствовала форма с полями ввода, кнопкой отправки и прочими необходимыми атрибутами. При этом form action должен содержать адрес программы, которая будет получать данные. Значение method может быть равно как GET, так и POST. На самом деле GET — это и есть передача параметров через url, добавляя их к адресной строке, так как POST передает их приложению посредством стандартного потока ввода. Какой из них лучше и удобней — решать вам, но чаще всего метод GET используется именно для генерации страниц (достаточно взглянуть на url который возникает при работе на поисковых серверах), тогда как второй для — передачи данных, отображать которые в адресной строке было бы весьма накладно.

Затем необходимо создать приложение, которое бы адекватно смогло воспринять все эти данные со стороны пользователя. В случае если данные передавались с помощью метода GET проблем не будет — можно действовать как в предыдущем примере. Если же приложение получает данные от пользователя с помощью POST, всё несколько иначе.

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

Гюльчитай, открой личико

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

Итак, данные от пользователя web-приложению можно передать через переменные окружения. Вот список наиболее часто употребляемых:

GATEWAY_INTERFACE
Поддерживаемая версия CGI.


REQUEST_METHOD
Метод запроса, может быть как GET так и POST.

HTTP_REFERER
Адрес страницы (url), активирующей текущее приложение на web-сервере.

PATH_INFO
Путь переданный приложению расположенный между именем приложения и строкой запроса.

QUERY_STRING
Строка запроса, если метод — GET, добавляеться к url.

REMOTE_HOST
Имя хоста удаленного пользователя.

REMOTE_USER
Имя удаленного пользователя.

REMOTE_IDENT
IP-адрес удаленного пользователя.

HTTP_USER_AGENT
Имя и версия броузера удаленного пользователя.

С помощью данных переменных можно получить исчерпывающую информацию о пользователе и передаваемых данных для верного проектирования вашего web-приложения. Конечно, этого хватит в том случае, если вы не собираетесь подобно Большому Брату следить за каждым телодвижением пользователя.

Но вернемся к поставленной задаче — передаче данных приложению от пользователя через форму. Данные, которые передаются через QUERY_STRING в приложение с помощью метода POST, достаточно просто извлечь для использования.

Ниже листинг программы, выдающий список некоторых переменных окружения и их значения. Узнайте кое-что о своем броузере и web-сервере.
‘); end.

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

Для создания полномасштабных приложений для интернета в Delphi существует специальный помощник — Web Server Application. С его помощью можно создать приложение генерируещее динамические web-страницы, основанные на CGI, NSAPI или ISAPI. Единственное накладываемое ограничение — непосредственно web-сервер должен работать на базе Windows.

Одним из главных преимуществ создания подобных приложений именно в среде Delphi является то, что вы продолжаете работать с визуальными компонентами — это значительно проще, чем создание приложений в других средах — возможность ошибки в больших проектах, где используется визуальное проектирование меньше, чем в тех, где всё описывается исключительно кодом. Кроме того, средства создания web-приложений позволяют импортировать уже существующие приложения в интернет-среду, что, согласитесь, немаловажно. Пока, конечно, Delphi не обладает большим набором компонентов для web-приложений, но, видимо, уже следующая версия этой среды обзаведется необходимыми. Но и сейчас Delphi можно считать достаточно удобным инструментом для создания приложений, взаимодействующих с интернетом.

IntraWeb. Пишем сайты на Delphi

Многие уже привыкли к тому, что Delphi позволяет создавать приложения не только для Windows.

Разработка на Delphi под MacOS, iOS и Android сегодня уже не вызывает особого удивления. Однако в Delphi уже довольно давно существует ещё одна возможность, которую обычно обходят стороной. Это разработка web приложений.

Для создания web приложений в Delphi используется технология IntraWeb, впервые ставшая доступной в версии 7. Она позволяет создавать web страницы в режиме визуального редактора по аналогии с VCL. Но, при этом сам проект и применяемые классы и компоненты адаптированы специально для работы с web.

Пример приложения IntraWeb

Создание проекта IntraWeb выполняется стандартным для Delphi способом.

После выбора «IntraWeb Application Wizard» и нажатия кнопки «Ok», будет необходимо выбрать тип IntraWeb приложения, указать название проекта и папку, в которой будут сохраняться его файлы.

В Delphi XE8 можно выбрать один из двух типов приложения IntraWeb:

  • StandAlone Application
    Windows приложение с Web интерфейсом;
  • ISAPIExtention
    Расширение для web сервера IIS.

По умолчанию выбран первый вариант. Оставим выбор без изменений.

После нажатия кнопки «Ok»будет создано приложение, состоящее из двух основных модулей: главная форма (обычно Unit1) и модуль, отвечающий за механизм пользовательских сессий (обычно UserSessionUnit).

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

В визуальном редакторе поместим на главную форму компонент TIWLabel и напишем в нём какой-нибудь текст. Например: «This is IntraWeb!».

Однако после компиляции приложения мы сразу этот текст не увидим.

Вместо этого появится окно сервера приложений IntraWeb.

Дело в том, что исполняемые файлы IntraWeb приложений уже включают в себя web сервер, который обрабатывает запросы браузера и отображает созданный в редакторе интерфейс. Также этот сервер позволяет выполнить ряд настроек его работы.

Для того чтобы увидеть нашу главную форму достаточно просто нажать в окне сервера кнопку со значком нужного браузера или ввести в адресной строке браузера: http://127.0.0.1:51865/$/. Где 51865 – это номер порта, который может быть и другим.

Попробуем создать не сложный интерфейс из двух кнопок. Первая выводит сообщение пользователю. Вторя текущую дату.

И то и другое реализуется и работает без проблем.

Ниже представлен исходный код обработчиков соответствующих кнопок. Несмотря на свою узкую «специализацию» компоненты IntraWeb имеют очень много общего со своими аналогами из VCL.

Работа с базами данных

Само взаимодействие с базами данных почти полностью аналогично VCL. Отличие только в том, что вместо «обычных» компонентов DataControls используются их аналоги из IntraWeb Data.

В тоже время разработка проекта для работы с базами данных имеет ряд особенностей:

  • При создании такого проекта в окне, где выбирается тип приложения необходимо установить флажок «Pool Data Connections»;
  • IntraWeb, в отличие от VCL, не всегда корректно работает с модулями данных (DataModule). Поэтому, все компоненты, которые отвечают за работу с базой данных (Connection, Query, Table и т.д.), лучше размещать на той же форме, где реализован интерфейс пользователя.
    В противном случае велика вероятность возникновения фатальных ошибок.

На скришоте ниже показан пример приложения IntraWeb, работающего с базой данных. Интерфейс пользователя реализован на основе трёх компонентов:TIWDBGrid, TIWDBEdit и TIWDBNavigator.

Очень немногие технологии позволяет без особых усилий сразу объединить на одной web странице представление данных и все операции с ними. Дело в том, что даже сегодня, несмотря на все разномастные фреймворки и прочие «результаты прогресса», эта задача сама по себе далеко не из лёгких. В тоже время IntraWeb с ней легко справляется, облегчая труд разработчика и экономя время.

Вообще, работа с базами данных всегда была одной из самых сильных сторон Delphi. И то, что здесь эта тенденция сохранилась, не может не радовать.

«Плюсы» и «минусы»

Как и любая другая технология IntraWeb имеет свои достоинства и недостатки.

«Плюсы»
  • Удобство.
    StandAlone приложения не нуждаются в web сервере. А, если приложению не требуется база данных или ему достаточно SQLite или Access, то о развёртывании инфраструктуры можно вообще забыть;
  • Простота освоения и работы.
    IntraWeb выполнена по максимальной аналогии с VCL. Поэтому, её освоить сможет без труда даже начинающий программист.
    Кроме того для того чтобы создавать сайты на IntraWeb нет необходимости изучать вёрстку. Всё можно сделать в визуальном редакторе;
  • Один язык программирования для Back-end и Front-end.
    Всё можно написать на Delphi;
  • Удобный и функциональный механизм работы с базами данных;
  • Совместимость с другими решениями для Delphi.
    Если модуль или библиотека не имеют жёсткой привязки к конкретной технологии (например, той же VCL), её можно задействовать и в IntraWeb.
«Минусы»
  • Ограниченные возможности по разработке интерфейсов пользователя.
    Этот недостаток отчасти оборотная сторона возможности обходиться без «обычной» вёрстки, а отчасти следствие функциональных возможностей IntraWeb.
    Хотя визуальные компоненты IntraWeb и поддерживают CSS, интерфейсы web приложений на основе этой технологии сложно назвать современными.
  • Ограниченный набор компонентов для работы.
    К сожалению, тот базовый набор компонентов, который входит в комплект поставки, это всё, что есть у разработчика. Дополнительных компонентов для IntraWeb нет, как «родных», так и сторонних;
  • Нестабильность и ошибки в работе.
    IntraWeb (особенно расширения ISAPI), по праву считается очень капризной. Поэтому нужно быть готовым устранять проблемы, возникающие даже там, где в VCL их просто не может возникнуть;
  • Высокая стоимость как самого Delphi так и IntraWeb (если версия «из коробки» не устраивает).

Всё это в конечном итоге определило узкую сферу применения IntraWeb.

Web приложения на основе этой технологии в основном разрабатываются для внутреннего пользования и почти не встречаются на просторах интернета.

Это вовсе не означает, что InraWeb это «плохо». Ни «плохих» ни «хороших» технологий не существует. Другое дело, что разные технологии могут решать одни и те же задачи с разной эффективностью.

С помощью IntraWeb Вам, скорее всего, будет трудно сделать эффектный landing page для Вашей компании. Однако при разработке корпоративной информационной системы с web интерфейсом для неё эта технология может очень сильно облегчить Вам жизнь.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL