Таймер winforms для чайников

Введение

Начал писать что-то типа “инструкции для начинающих”…думал справлюсь быстро. Но когда посмотрел часть статьи в Word и оказалось, что  она занимает без малого 30 страниц текста, решил – перебор :). Дополнил материал парой вводных частей и решил оставить этот материал в блоге. Помня просьбы некоторых читателей не выкладывать большие “портянки” в блог, а хотя бы разбивать статью на несколько частей, решил так и сделать. Поэтому вместо одной статьи в блоге будет три. Каждая часть – это отдельный момент работы. Первая и третья части по размеру вышли по-меньше, вторая – по-больше.

На кого рассчитан материал?  Эта статья будет чем-то похожа, наверное, на развернутую инструкцию про то, с чего начинать и в какой последовательности действовать при работе над любым API онлайн-сервиса в Delphi. Здесь довольно много такой информации, которую большинство “прожженных” профессионалов в Delphi назовут прописными истинами или понятным на интуитивном уровне, но, как говорится из песни слов не выкинешь. Вполне возможно, что именно эти прописные истины пригодятся тем, кто собирается использовать возможности онлайн-сервисов в своих Delphi-приложениях, но не знает с чего начать.

Конечно, любой материал, посвященный программированию, должен сопровождаться примерами. Для примера, я рассматриваю подробным образом работу с API сервиса etxt.ru (его я ещё в блоге не рассматривал). Там где было возможно и целесообразно я давал ссылки на другие материалы блога, посвященные работе с API в Delphi, например, вы найдете практически всю подборку ссылок, касающуюся работе с протоколом OAuth. В заключительной части вы найдете ссылки для загрузки PDF-версии и исходников приложения, рассмотренного в статье.

В этой части я решил сосредоточится на самых общих моментах. Вот какие “философские” вопросы мы сейчас рассмотрим:

К выполнению любой задачи необходимо приступать при наличии достаточной подготовки. Работа с API онлайн-сервисов в Delphi – не исключение. Прежде, чем начать работу непосредственно над кодом, необходимо изучить ряд вопросов, без которых дальнейшая работа может превратиться в сплошные проблемы. Поэтому сейчас я не приведу ни одной строки кода Delphi – только ссылки на материалы, которые стоит изучить перед началом работы.

4 ответа

Лучший ответ

WPF — это новая платформа для разработки приложений для Windows (и для браузеров). WPF не обязательно нужен для замены Windows Forms. С WPF проще добавлять в приложение 3D, видео и анимацию. Поскольку он основан на XAML, его также легко привязать к данным XML, например data из веб-сервиса и динамически загружать его как контент.

WPF также, на мой взгляд, лучше отделяет программирование пользовательского интерфейса от бизнес-логики. Легче иметь опытного дизайнера WPF для создания вашего пользовательского интерфейса с помощью такого инструмента, как Expression Blend и как программист, сосредоточьтесь больше на серверной части. Таким образом, это больше похоже на фронтендер HTML и CSS, создающий привлекательный дизайн для вашего сайта, в то время как вы работаете над серверной частью.

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

7

Peter Mortensen
21 Сен 2011 в 07:36

Еще одна вещь, которая мне нравится в WPF, — это то, что основная обработка графики была перенесена с GDI + на DirectX. Это дает огромный выигрыш в производительности при работе с трехмерными плоттерами или плоттерами с плотными сетками / временными рядами, поскольку он пытается использовать ресурсы графического процессора (графические), а не ЦП.

Peter Mortensen
21 Сен 2011 в 07:21

Одно из преимуществ — разделение проблем. Вы можете создать свое приложение, не беспокоясь о таких элементах пользовательского интерфейса, как макет, цвета, шрифты и т. Д. Затем вы можете передать его дизайнеру, который сможет сделать его потрясающим (надеюсь) без необходимости разбираться в коде (используя Blend или какой-либо другой инструмент. ).

С чисто прагматической точки зрения мой выбор, какую структуру использовать, часто зависит от того, какие сторонние элементы управления мне нужно использовать (хотя вы можете использовать элемент управления WPF в приложении WinForms, например — с помощью элементов управления хостингом).

dommer
3 Апр 2009 в 09:36

Вы видели WPF или WinForms, выбирайте с умом ?

Короче говоря, WPF — это следующая платформа пользовательского интерфейса для Microsoft Windows. Он извлекает много уроков из предыдущих технологий, но есть риск незрелости инструментов и сторонних компонентов.

4

Peter Mortensen
21 Сен 2011 в 07:37

Есть ли в Delphi менеджер пакетов?

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

Но если вам нужна командная строка, такая как диспетчер пакетов, вы можете использовать диспетчеры пакетов Delphi с открытым исходным кодом, такие как  boss  или  MultiInstaller . Эти менеджеры пакетов обеспечивают установку пакетов Delphi непосредственно из репозиториев git и могут настраивать проект Delphi.

Создание проекта

При создании приложения в Visual Studio необходимо сначала создать проект и решение. Этот пример демонстрирует создание проекта Windows Presentation Foundation (WPF).

  1. Создайте новый проект. В строке меню выберите Файл > Новый > Проект.

  2. В диалоговом окне Новый проект выберите категорию Установленные > Visual C# > Рабочий стол Windows, а затем выберите шаблон Приложения WPF (.NET Framework). Присвойте проекту имя HelloWPFApp и щелкните ОК.

  1. Запустите Visual Studio.

  2. На начальном экране выберите Создать проект.

  3. На экране Создание проекта выполните поиск по запросу «WPF», выберите в результатах Приложение WPF и нажмите кнопку Далее.

  4. На следующем экране присвойте проекту имя HelloWPFApp и щелкните Далее.

  5. В окне Дополнительные сведения для целевой платформы должна быть указана версия .NET Core 3.1. Если это не так, выберите .NET Core 3.1. Затем нажмите Создать.

Visual Studio создает решение и проект HelloWPFApp, а в обозревателе решений выводятся различные файлы. Конструктор WPF отображает представление кода и представление XAML MainWindow.xaml в представлении с разделением. Сдвигая разделитель, можно делать любое из представлений больше или меньше. Можно выбрать для просмотра только визуальное представление или только представление XAML.

Observação

Дополнительные сведения о XAML (eXtensible Application Markup Language) см. в обзоре XAML для WPF.

После создания проекта его можно настраивать. Для этого выберите Окно свойств в меню Представление или нажмите клавишу F4. Затем можно отображать и изменять параметры элементов проекта, элементов управления и других элементов в приложении.

  1. Запустите Visual Studio.

  2. На начальном экране выберите Создать проект.

  3. На экране Создание проекта выполните поиск по запросу «WPF», выберите в результатах Приложение WPF и нажмите кнопку Далее.

  4. На следующем экране присвойте проекту имя HelloWPFApp и щелкните Далее.

  5. В окне Дополнительные сведения в качестве требуемой версии .NET Framework автоматически должна быть выбрана .NET 6.0 (долгосрочная поддержка) . Если этого не произошло, выберите .NET 6.0 (долгосрочная поддержка) вручную. Затем нажмите Создать.

Visual Studio создает решение и проект HelloWPFApp, а в обозревателе решений выводятся различные файлы. Конструктор WPF отображает представление кода и представление XAML MainWindow.xaml в представлении с разделением. Сдвигая разделитель, можно делать любое из представлений больше или меньше. Можно выбрать для просмотра только визуальное представление или только представление XAML.

Observação

Дополнительные сведения о XAML (eXtensible Application Markup Language) см. в обзоре XAML для WPF.

После создания проекта его можно настраивать. Для этого выберите Окно свойств в меню Представление или нажмите клавишу F4. Затем можно отображать и изменять параметры элементов проекта, элементов управления и других элементов в приложении.

Изменение имени MainWindow.xaml

Давайте присвоим файлу MainWindow более конкретное имя. В обозревателе решений щелкните правой кнопкой мыши файл MainWindow.xaml и выберите команду Переименовать. Измените имя файла на Greetings.xaml.

Как ЛЕГКО создавать приложения на основе REST в Delphi?

Delphi поддерживает REST через инфраструктуру DataSnap, поддержку интеграции WebBroker и создание прокси-серверов JavaScript для методов, предоставляемых веб-службой.

Вы можете создавать сложные REST-приложения бизнес-уровня с помощью  DataSnp в Delphi . Или вы можете использовать RAD Server, который обеспечивает большую функциональность, лучшую гибкость и масштабируемость для ваших приложений на основе служб.

Кроме того, вы можете использовать различные библиотеки и фреймворки с открытым исходным кодом для создания приложений RESTful. Это включает:

  •  Веб-фреймворк Horse для Delphi — быстро, убедительно и минималистично
  • DMVCFramework —  популярный и мощный веб-фреймворк — поддерживает разработку API-интерфейсов RESTful и JSON-RPC и предлагает официальное руководство.

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

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

  • 100 кроссплатформенных примеров  — охватывает большую часть повседневных задач, которые вы выполняете при создании приложений с помощью Delphi.
  • Официальные и новейшие образцы  от Embarcadero — охватывают все расширенные функции и методы языка программирования Delphi.

Что необходимо знать и уметь?

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

В целом, изучение информации по пяти предоставленным пунктам должно быть достаточно, чтобы начать работу над любым API онлайн-сервисов в Delphi. При изучении каждого из пунктов старайтесь что-то делать в Delphi на эту тему. Изучаете HTTP? Начните параллельно изучать, например, Indy для работы с HTTP в Delphi – пробуйте скачивать странички сайтов из Сети, обрабатывать исключения HTTP, выполнять не только GET-, но POST-запросы и т.д. Изучаете кодировки – напишите простенькую программку для преобразования кодировок. Разбираетесь с форматом XML – найдите на компьютере какой-нибудь файл XML и попробуйте прочитать из него что-нибудь в Delphi. Учитесь постепенно – API от вас не убежит, поверьте. В общем – практика, практика и ещё раз практика.

Частично, разобраться с вопросами, обозначенными выше, Вам поможет представленный далее материал.

Windows Forms

 
WinForms was introduced in February 2002 as a GUI based approach to the .Net Framework. Largely, WinForms allows the developer to drag and drop controls on a Windows Form and allows the developer to manipulate these controls with a code-behind file that can have C#, VB.NET, or any other .NET language. Each WinForms control is an instance of a class because WinForms exists as a wrapper that has a set of C++ classes. Microsoft’s Visual Studio allows easier workaround with WinForms as developers can easily drag and drop controls from a Toolbox.
 

 
 
In a WinForms desktop application, the developer may only access the code-behind file where they can manipulate control events. WinForms desktop applications have their limits in terms of their controls’ capabilities and application behavior as revealed in the next section.
 

История двух платформ

В течение последних 20 лет, в то время как технологии пользовательского интерфейса для настольных систем совершенствовались на их пути от Windows Forms к UWP, оборудование также развивалось от тяжелых системных блоков с небольшими ЭЛТ-мониторами до мониторов с высоким разрешением и легких планшетов и телефонов с различными методами ввода данных, такими как сенсорный экран и рукописный ввод. Эти изменения привели к созданию двух различных концепций: классического приложения и современного приложения. Современное приложение — это программа, которая учитывает различные форм-факторы устройств, разнообразные методы ввода-вывода и использует современные функции настольных систем при работе в изолированной модели выполнения. Классическое приложение (оно же приложение для настольных систем), с другой стороны, является приложением, которому необходим надежный интерфейс пользователя с высокой плотностью элементов управления, который лучше использовать с мышью и клавиатурой.

В следующей таблице показаны различия между этими двумя концепциями:

Сравниваемый аспект
Современное приложение
Классическое приложение
Безопасность
Вложенное исполнение & отличные основы

Разработано с нуля, чтобы учитывать конфиденциальность пользователя, управлять временем работы батареи и уделять все внимание обеспечению безопасности устройства.
Пользователь & уровень безопасности администратора. У вас есть собственный доступ к папкам реестра и жесткому диску.
Развертывание
Установка и обновления управляются платформой.
MSI, пользовательские установщики & обновления

Традиционный источник головной боли для разработчиков и ИТ-управленцев.
Distribution
Доверенное распространение & подписанные пакеты. Распространение выполняется из надежного источника, а не из Интернета.
Сеть, SCCM & пользовательское распространение. Отсутствие контроля над тем, что, как установлено, влияет на весь компьютер.
Пользовательский интерфейс
Современный пользовательский интерфейс. Различные механизмы ввода, рукописный ввод, касание, джойстик, клавиатура, мышь и т. д.
Windows Forms, WPF, MFC. Предназначен для работы с мышью и клавиатурой для обеспечения плотного пользовательского интерфейса и получения максимальной производительности от рабочего стола.
Данные
Первые облачные данные с аналитическими сведениями. Источник истины в облаке. Аналитические сведения о том, что происходит с вашим приложением и как оно работает.
Локальные данные. Для классических приложений обычно требуются какие-то локальные данные.
Конструирование
Для использования различными способами. Предусмотрено использование на различных платформах, внешних интерфейсах и серверных системах, с задействованием ресурсов в как можно большем числе мест.
Предназначено только для настольных ПК Windows.

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

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

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

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

Что делать, если время поджимает?

Если время поджимает, а изучать что-то новое некогда/лень (нужное подчеркнуть), но надо, кровь из носу, получить компонент или программу для работы с API, то выход есть…даже несколько выходов.

  1. Отложить работу до тех пор, пока не появится время заняться изучением вопросов, представленных выше.
  2. Упрашивать кого-нибудь на форумах отдать вам готовые исходники, обосновывая это дело своей жуткой занятостью. Не серьезное и не достойное занятие для уважающего себя разработчика.
  3. Вместо изучения пяти пунктов изучить один – научиться правильно составлять техническое задание. Потом смело забросить ТЗ на какой-нибудь freelance.ru и ждать того у кого было время изучить работу с HTTP, кодировками и т.д.

Серьезно. Любой из упущенных моментов обучения ведет к серьезным проблемам в дальнейшей работе:

  • не разберетесь в работе HTTP – замучаетесь составлять запросы к API, работать с исключениями API и т.д. Элементарно не сможете разобраться с тем, почему сервер отвечает вам 404 кодом, не смотря на то, что запрос (по вашему мнению) составлен правильно.
  • не разберетесь с компонентами (хотя бы поверхностно) – вообще не сможете приступить к работе, т.к. будете смотреть на эти компоненты как…ну, в общем, с удивлением будете смотреть
  • не знаете, как работать с JSON – считайте, что 80% различных API вам вообще недоступны.

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

Начало работы с API. Какие компоненты выбрать?

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

или

Вместе с этим часто в документации можно встретить и такую информацию:

Что это всё значит для нас, как для разработчиков?

Эта краткая информация говорит нам о самом главном в дальнейшей работе – о том какие компоненты и библиотеки надо будет задействовать в Delphi.

Например, первое сообщение говорит нам о том, что все запросы и ответы на них передаются по протоколу HTTP. Что использовать для работы с HTTP в Delphi? Библиотек и вариантов масса:

  1. Indy – “родная” библиотека Delphi
  2. Synapse
  3. ICS
  4. IP*Works
  5. ещё с десяток различных платных и бесплатных компонентов и библиотек.

Что говорит нам второе сообщение? Второе сообщение говорит нам о том, что взаимодействовать с сервером мы можем или по протоколу SOAP или по протоколу XML-RPC. Что использовать в Delphi? Если прочитать, как и посредством чего работают эти протоколы, то чисто теоретически, для работы по этим протоколам можно ограничиться двумя компонентами:

  1. Первый компонент – для транспорта. Это опять же, что то, что работает с HTTP (см. выше перечень библиотек)
  2. Второй компонент – для разбора ответов и составления запросов. Это может быть или стандартный TXMLDocument или какая-нибудь сторонняя библиотека, например, NativeXML.

Для работы по XML-RPC этих двух компонентов будет более, чем достаточно. Но, если вы решили работать по SOAP, то проще, лучше и быстрее использовать уже готовые решения в Delphi – это инструмент для импорта WSDL и компоненты с вкладки WebServices. О том, как ими пользоваться я рассказывал на примере переводчика Bing в статье “API переводчика Bing. Используем SOAP в Delphi“.

Третье сообщение интереснее, т.к. в нем появляется новое непонятное слово – REST. Чтобы понять, что это такое – посмотрим на определение:

REST (Representational state transfer) – это стиль архитектуры программного обеспечения для распределенных систем, таких как World Wide Web, который, как правило, используется для построения веб-служб. Термин REST был введен в 2000 году Роем Филдингом, одним из авторов HTTP-протокола. Системы, поддерживающие REST, называются RESTful-системами.
В общем случае REST является очень простым интерфейсом управления информацией без использования каких-то дополнительных внутренних прослоек. Каждая единица информации однозначно определяется глобальным идентификатором, таким как URL. Каждый URL в свою очередь имеет строго заданный формат

Пусть вас не пугает то, что “API реализовано на REST-принципах“. Для реализации таких API в Delphi опять же все есть. Главное знать в каком формате сервер присылает данные. Если данные приходят в виде XML-документов, то вам достаточно опять же двух компонентов: для работы с HTTP и для работы с XML. Если же данные возвращаются в формате JSON, то тут возможности Delphi сейчас по-богаче:

  1. Если Вы обладатель Delphi XE5-XE7, то в Delphi есть целая библиотека – REST Client Library для реализации таких API.
  2. Можно использовать любой компонент для работы с HTTP и, опять же, целый ряд компонентов для работы с JSON – это и стандартная (с версии Delphi 2010) библиотека для JSON и SuperObject и ещё несколько библиотек для работы с JSON в Delphi.

Как видите, уже на этапе чтения вводного текста документации API вы сталкиваетесь с тем, что вам необходимо знать. Помимо представленных выше ситуаций, прочие API могут поддерживать и другие протоколы, например, API Яндекс.Диска работает как по HTTP, так и по протоколу WebDav, а Google Contacts API поддерживает как работу по HTTP, так и по CardDav и т.д. И как бы вы не торопились создать свое первое приложение для работы с API, вам придётся, прежде всего, изучить работу протокола и правильно подобрать набор компонентов для работы.

Определившись с набором компонентов для дальнейшей работы, можно приступать к дальнейшему чтению документации и началу работы над своими классами Delphi для работы с API. 

О том, как написать свой первый класс для работы с API мы поговорим во второй части.

Следующая часть: Работа с API онлайн-сервисов в Delphi. Авторизация и работа с методами API

Как насчет финального бонусного списка полезных ссылок Delphi?

  • Кураторский список всех блестящих вещей в экосистеме Delphi / Object Pascal —  awesome-pascal

    Игра, мультимедиа, база данных, сценарии, невизуальные компоненты для лучшей и быстрой разработки на Delphi

  • Параллельное программирование  для достижения высокой производительности
  • Анализируйте исходный код —   инструменты Pascal Analyzer  и  Delphi Parser можно использовать для анализа и поиска проблем в коде.

Это лишь часть всего списка. Если вам есть чем поделиться, оставьте комментарий!

RAD Studio может воплотить ваши прекрасные идеи в реальность — на Windows, macOS, Linux, iOS и Android. Почему бы не скачать бесплатную пробную версию и не посмотреть, что она может для вас сделать?

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.Start Free Trial   Upgrade Today   Free Delphi Community Edition   Free C++Builder Community Edition

Настройка интегрированной среды разработки (IDE)

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

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

При запуске Visual Studio сначала открывается начальное окно. Выберите Продолжить без кода, чтобы открыть среду разработки. Вы увидите окна инструментов, меню и панели инструментов, а также основную область окна. Окна инструментов закреплены в левой и правой частях окна приложения. Поле поиска, строка меню и стандартная панель инструментов закреплены в верхней части. При загрузке решения или проекта редакторы и конструкторы отображаются в центральной области окна приложения. При разработке приложения чаще всего используется именно эта область.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: