Delphi с интерфейсом HTML/CSS
Я хочу разработать приложение Delphi с графическим пользовательским интерфейсом HTML/CSS, не обязательно работающим в веб-браузере. Я хочу сделать это, создать более богатый графический пользовательский интерфейс с анимацией и т. Д. И отделиться от обычных компонентов VCL / внешнего вида Windows. Какие-либо предложения?
9 ответов
В одном из моих приложений у меня есть встроенный браузер, и я реализовал интерфейс IDocHostUIHandler. Это позволяет мне выставить COM-объект с помощью метода "GetExternal". У меня просто есть COM-объект, который предоставляет методы и свойства моего приложения, которые делают их доступными для веб-страниц, размещенных во встроенном браузере.
Таким образом, скрипт на моих веб-страницах имеет такие строки, как "external.DoSomething()" и "i=external.GetThisValue()". Так, например, за событиями нажатия кнопки вы можете запустить метод вашего приложения (реализовать в основной форме, в самом объекте COM или как угодно).
На этом сайте много информации о встраивании браузера в ваше приложение Delphi: http://www.delphidabbler.com/articles?article=22
Конечно, реализовать многие из этих вещей может быть обременительно, и во многих случаях, возможно, есть и лучшие варианты. Но для моей конкретной цели я могу предложить "домашнюю страницу", которую можно легко изменить, чтобы изменить ее макет, посмотреть и даже предоставить больше (или меньше) функциональных возможностей, как того требуют я или мои пользователи.
HTML и CSS не доставят вам ни анимации, ни богатого пользовательского интерфейса. На самом деле это далеко не так. Наоборот. Вам нужно будет инвестировать в инструментарий для обеспечения такого рода функциональности и почти наверняка задействовать JavaScript. И даже если вы не хотите, чтобы ваше возможное приложение размещалось в веб-браузере, ваше приложение само должно будет размещать веб-браузер для отображения вашего HTML/CSS/JavaScript UI, и тогда вам будет гораздо сложнее подключить ваш Графический интерфейс к логике вашего приложения (если вы действительно не принимаете архитектуру веб-приложения).
Delphi (или любой другой язык разработки приложений для Windows) значительно продвинет вас вперед по пути к более простому, эффективному и быстрому внедрению Rich User Interface, чем HTML или CSS.
Если вам не нравится внешний вид стандартных элементов управления Delphi (о чем вы говорите), существует множество альтернативных библиотек.
Также имейте в виду, что когда кто-то использует приложение Windows, он ожидает, что оно будет выглядеть и вести себя определенным образом в значительной степени. Использование модной веб-парадигмы в настольном приложении просто ради нее может привести в замешательство и разочарование пользователей, если зайти слишком далеко.
Я полностью за пользовательские интерфейсы, нарушающие соглашение, где это приводит к более интуитивному пользовательскому интерфейсу, но просто быть "красивее" не обязательно ведет в этом направлении и столь же ошибочно, как и догматически придерживаться соглашения.
Если вам нужна Delphi-программа с более привлекательным интерфейсом, HTML на самом деле не то, что вам нужно. Что вам действительно нужно, так это более качественные элементы управления VCL.
Взгляните, например, на TMS Smooth Controls. Если вы используете Delphi 2009 или 2010, вы можете бесплатно скачать его здесь. Это одна из многих библиотек компонентов, которые могут привнести в вашу программу более приятный пользовательский интерфейс.
HTML / CSS предлагает несколько приятных функций, которые (еще нет?) Доступны в Delphi и VCL. Они также являются хорошей отправной точкой для программирования клиент-сервер, здесь ключевым фактором является разделение пользовательского интерфейса и бизнес-логики.
Одна из популярных библиотек для Delphi - это проект extpascal:
ExtPascal - это обертка / привязка Object Pascal (Delphi, FreePascal/Lazarus) для Ext JS, полной GUI-среды Ajax, созданной на JavaScript, для разработки Rich Internet Application (RIA). ExtPascal позволяет использовать Ext JS из команд Object Pascal, выданных сервером. Это приносит структуру и строгий синтаксис Object Pascal для программирования веб-браузера. ExtPascal включит Draw2d в будущие выпуски.
Некоторые демоверсии онлайн здесь и здесь.
PS и мне очень нравится поддержка HTML / CSS для размеров элементов и шрифтов в относительных единицах (например, в процентах). В сочетании с браузерным увеличением / уменьшением и WCAG эргономика пользовательского интерфейса не может быть намного лучше.
Вариант HTML 1
Если вы действительно хотите использовать HTML+CSS(+JavaScript) для создания графического интерфейса, вы можете взглянуть на HTML-приложения, очень увлекательную концепцию от Microsoft. Приложения HTML, файлы.hta, были поддержаны из Windows ME, если я правильно помню, и они все еще поддерживаются в Windows 7.
Вы можете создать приложение HTML (то есть файл HTA) и, тем самым, создать графический интерфейс, используя только HTML, CSS и JavaScript. Когда пользователь дважды щелкает файл HTA, он открывается как программа, но графический интерфейс полностью основан на HTML; на самом деле, все окно является замаскированным окном Internet Explorer.
А теперь важная часть: вы можете создавать не-GUI-приложения Delphi (то есть приложения Delphi, которые не являются консольными приложениями, но также не имеют форм) и запускать их через гиперссылки (или JavaScript) из вашего HTA GUI. (Ну, вероятно, лучше создать одно такое приложение Delphi и использовать аргументы командной строки (ParamStr
s) сообщить желаемое действие.)
Просто идея...
Вариант HTML 2
В качестве альтернативы, вы можете создать обычное приложение с графическим интерфейсом Delphi, но заполнить всю основную форму TWebBrowser (элемент управления IE), используя Align := alClient
, Затем вы можете загрузить статические HTML-страницы (хранящиеся в папке Program Files или в Интернете) или использовать Delphi для динамического создания HTML-страниц для показа. Я думаю, что есть возможность перехватить ссылки из элемента управления, чтобы вы могли отвечать на ссылки, используя код Delphi.
Что насчет OpenGL?
Если вы хотите "оторваться" от обычного внешнего вида Windows, я бы порекомендовал вам создать графический интерфейс с помощью OpenGL. Создать приложение Delphi с помощью OpenGL очень легко (если вы знакомы с OpenGL) - просто добавьте "OpenGL" к вашему uses
список.
Во-первых, я полностью согласен с ответом Deltics.
Тем не менее, если вы осваиваете HTML и CSS (а также JavaScript, AJAX и т. Д.) И ищете способ использовать мощь и скорость компилятора Delphi для управления динамикой веб-сайта, это может представлять интерес.
Я создал проект, который использует компилятор Delphi для создания библиотеки, которая запускает веб-сайт. Исходные файлы объединяют HTML и Delphi, как и другие инструменты веб-сценариев, но обрабатываются при обновлении страницы и автоматически компилируются. Он использует "библиотечный обработчик", который включает библиотеку веб-сайта практически во все, что вам нравится: IIS, Apache, автономный HTTP-сервер (для хостинга) или непосредственно в InternetExplorer или FireFox (который отлично подходит для разработки).
Новые версии Qt содержат возможность использовать html/js для интерфейсов. Я не знаю, есть ли привязки библиотеки Qt для Delphi, но Qt именно то, что вам нужно.
Если вы хотите, чтобы ваш объект delphi/Pascal был "задним фоном" и имел сеть, подобную RIA, вам также стоит взглянуть на Morfik: текст ссылки