Отображение содержимого фтп-сервера в TListView с ассоциированными иконками в системе

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

Читать на сайте автора.

Отправка и получение писем в Delphi и Courier Mail Server. Часть 1

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

Читать на сайте автора.

Установка checkboxes в ячейках с использованием вычисляемоего поля. Часть 2

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

 

Читать на сайте автора.

Работа с DBF-таблицами без использования BDE и ADO

Приветствую читателей блога. Сегодняшняя статья будет посвящена работе с DBF-файлами, без использования ADO, BDE и компонентов доступа к данным. Я уже рассказывал про работу с DBF-файлами, это описано в этой статье.

 

Читать на сайте автора.

Установка checkboxes в ячейках с использованием вычисляемоего поля. Часть 1

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

 

Читать на сайте автора.

Имитация подключения к СУБД. Индикатор подключения на Delphi

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

 

Читать на сайте автора.

Работа с MapWindow GIS. Убираем ошибку floating point division by zero в 4.9.2

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

Мне уже задавали этот вопрос, а именно, что когда устанавливают компонент TMap на свою форму, а затем просто при компиляции проекта появляется ошибка: floating point division by zero. Если честно, то я не знаю, в какой момент она возникает. Может это связано с системой координат, либо еще что-то, но решается она очень и очень просто, по крайней мере, я так ее решил. Эту ошибку я наблюдал в Delphi 7, что касается других версий Delphi, я сказать ничего не могу, поэтому ее может просто и не быть.

Поэтому, если после обновления MapWindow GIS до версии 4.9.1 или 4.9.2 у Вас появляется подобная ошибка, то ниже будет описано, как ее можно решить. Мы просто отключим исключения, которые возникают с использованием чисел с плавающей точкой.

Для начала нам нужно объявить константу:

const MCW_EM = DWord($133f);

А затем на событие OnCreate формы, либо можно OnShow пишем следующий код:

Set8087CW(MCW_EM);

Вот и все, как видите, ничего сложного. Теперь нам необходимо просто установить компонент на форму и скомпилировать проект. У меня такой ошибки больше не появляется, и программа отрабатывает на 100 процентов.

Гомельский государственный университет им. Франциска Скорины

Читать на сайте автора.

Работа с MapWindow GIS. Новая версия 4.9.2. Обзор обновлений

MapWindowGIS в DelphiВсем доброго времени суток. Давненько я не писал ничего про MapWindow GIS в Delphi. Может оно и к лучшему, так как летом вышла очередная новая версия данного ActiveX-компонента, в которой наконец-то появилась поддержка Google-карт.

Мы уже с Вами рассматривали один проект, который позволяет в своих программах добавлять интерактивные карты Google. Эта библиотека называется GMLib и я уже о ней рассказывал на этом блоге. Но многим нравиться именно MapWindows GIS, так как по мне, она более функциональная и универсальная, да и разобрали в данном компоненте мы уже прилично вопросов.

Так вот, здесь я хотел бы поговорить о новой версии, которая вышла в августе 2014 года – MapWinGis 4.9.2. Вам лишь необходимо скачать последнюю версию с официального сайта (ссылка) для своей операционной системы.

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

Вообще, карты Google теперь в проекте Вашем могут выглядеть следующим образом:

MapWindowGIS 4.9.2

Горячие клавиши по умолчанию

Теперь на карте есть свои встроенные горячие клавиши, которыми можно с легкостью управлять своим проектом, например:

  • «+» — увеличение на карте
  • «-» — уменьшение на карте
  • «*» — увеличение на карте до ближайшей плитки
  • «M» — измерение расстояния
  • «Колесо мыши» — увеличение или уменьшение масштаба, в независимости от того, какой тип курсора у Вас установлен
  • «Z» — увеличение
  • «Shift+Left» – увеличение до предыдущего слоя
  • «Shift+Right» – увеличение до следующего слоя

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

Измерения расстояния и площади

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

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

Measuring.MeasuringType:=MeasureArea;

Вот так будет выглядеть измерение расстояния:

MapWindowGIS 4.9.2

А вот так измерение площади:

MapWindowGIS 4.9.2

Данный режим также поддерживает различные горячие клавиши:

  • Щелчок левой кнопки мыши – добавление новой точки
  • Щелчок правой кнопки мыши – стирание последней добавленной точки
  • Двойной щелчок мыши – разделение измерения пути
  • Ctrl+щелчок мыши – закрывает полигон для измерения
  • Shift+щелчок мыши – привязывает линию к ближайшей вершине на слое карты

Кроме этого, теперь можете создавать слои без создания нужных объектов. В версии 4.9.2 еще много различных вкусностей: он поддерживает и гибридные карты Яндекс, Yahoo и других картографических систем, о которых мы будем говорить в следующих статьях.

Обновление предыдущей версии MapWindowGIS

Если Вы не знаете, как можно установить новую версию ActiveX-компонента, то посетите данную статью. Если же она у Вас установлена, то можно просто ее обновить, например, при помощи регистрации библиотеки с помощью команды regsvr32 (Пуск-Выполнить), либо же просто импортируйте новую версию компонента в Delphi.

На этом все, хотели бы Вы дальше читать статьи по MapWindowGIS в Delphi?

Читать на сайте автора.

Отправка сообщений в Microsoft Outlook. Скрытие окон безопасности

Всем доброго времени суток дорогие читатели блога. Давно я ничего не писал в блог, на этот раз решил исправиться. Передо мной стала задача разработать систему заявок на одном предприятии. Так вот, в одном приложении мне необходимо было сделать, чтобы копия заявки приходила на электронный адрес исполнителя. Все система моя работает на MS SQL Server, электронные адреса исполнителей хранятся там же.

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

В принципе тут ничего сложного нет, можно для этих целей использовать MAPI, но минус в этом заключается в том, что когда используется MAPI, то пользователю показывается сообщение о том, что к Вашему ящику пытаются получить доступ, это может быть вредоносное ПО и так далее. Эта лишняя информация для пользователя (в моем случае), потому что они начнут паниковать, когда будут составлять заявку, будут звонить, что вредоносное ПО и так далее. Мне пришлось решать проблему по поводу скрытия данного уведомления. На предприятии у нас используется Microsoft Outlook 2003, поэтому в настройках безопасности там нельзя было выключить данный пункт, по крайней мере, я не знал, как это сделать.

Программа установлена более чем на 100 компьютерах. На некоторых компьютерах мне удалось решить данную проблему при помощи установки Microsoft Outlook Express, так как там имеется пункт по поводу отключения безопасности. В этом случае, отправка сообщений производится в фоном режиме, то есть, пользователю не придется нажимать на кнопку Да, что якобы какое-то программное обеспечение пытается получить доступ к учетной записи в электронной почте. На остальные компьютерах по прежнему был установлен Microsoft Outlook 2003 и там никак нельзя было менять его на более низкую версию. Полазив немного в Интернете, я нашел довольно интересную программу, которая называется ClickYes.

Программа очень полезная и интересная, по крайней мере, в моих целях она мне очень пригодилась. Но один ее очень большой минус – это то, что она является платной. Как Вам сказать платной, есть более ранние версии программы – они бесплатны, а уже новые версии, начиная с 2010 года – уже платные. На нее имеется тестовый период в 30 дней. Программа ClickYes предназначена для того, чтобы скрывать это самое окно безопасности в Microsoft Outlook.

Бесплатные версии его не скрывают, а просто нажимают на кнопку Да, в течение 10 секунд, то есть, пользователь видит это окно все равно и может сам нажать на него в течение 10 секунд, что касается версии с 2010 года (платная версия), то она полностью скрывает это окно безопасности и пользователь его вообще не видит. Конечно, можно было что-то подобное реализовать у себя, но я стал искать простой способ.

Этот способ заключался в том, что я возвращаю на все компьютеры версию Outlook до 2003 (Microsoft Outlook Express), а на сервере (где установлена база данных и серверная часть программы) устанавливаю Microsoft Outlook Express. С сервера и будет отправляться копия заявки на нужные адресаты (за это будет отвечать серверная часть программы). Так как в Outlook Express можно в настройках отключить уведомления безопасности, то я решил таким способом. Насколько я знаю, что в более старших версиях OutLook (после 2003) тоже можно отключать данные уведомления.

Самый простой способ – это установить Outlook Express на сервер и с него отправлять электронную почту на любые адреса (без разницы какой там будет установлен Outlook).

На сервере можно использовать следующий способ отправки сообщений при помощи MAPI:

procedure TForm3.Button2Click(Sender: TObject);
var
   lMail: TMapiControl;
begin
   try
      RichEdit2.Lines.Add('текст письма');
      lMail := TMapiControl.Create(Self);
       lMail.Reset;
       lMail.Recipients.Add(PChar('адресаты');
       lMail.Subject:='Заявка от: '+Ini.ReadString('Authorization','login','');
       lMail.Body:=RichEdit2.Text;
       lMail.ShowDialog:=False; //Показывать перед отправкой диалог мейл-клиента по умолчанию или нет.
     lMail.Sendmail;
    lMail.Free;
   except
    on e:Exception do
   end;
end;

Не забудьте в usesподключить модуль MAPI. Что касается адресатов, то можно отправлять сразу нескольким, тогда Вам придется каждого указывать через точку запятой. Думаю, что тут все понятно, особо ничего сложного нет.

Подведем итоги: если Вам требуется отправить письмо из своей программы при помощи клиента Microsoft Outlook и чтобы не появлялось окно безопасности, то можно воспользоваться версией Outlook Express (необходимо в настройках безопасности будет выставить), либо же другие версии, где эти уведомления отключаются. Можете разработать функционал, который сам будет скрывать данные окна (нажимать на нужные кнопки). Можете использовать сервер отправки сообщений, как я привел выше, а можете использовать программу ClickYes, которая очень мне понравилась, причем она не слишком дорогая. В конце я прикладываю скриншот одного модуля своей системы заявок, из которого осуществляется отправка электронной почты:

modul_zayv

Кстати, еще очень удобно отправлять сообщения из Outlook Express, так как она понимает HTML-разметку, и Вы с легкостью можете формировать внешний вид своего сообщения как Вам захочется. Это еще один плюс в пользу того, что лучше использовать Outlook Expres sна том же самом сервере. Не забудьте посмотреть статью про MAPI, там тоже имеется полезная информация.

Читать на сайте автора.

Создаем красивые слайды (слайд-шоу) в своем приложении при помощи PicShow

picshowВсем привет дорогие друзья. Совсем недавно передо мной встала одна проблема: создание слайдов (слайд-шоу) в собственном приложении. Другими словами, необходимо было организовать рекламу из картинок, с различными красивыми переходами, задержкой и так далее.

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

Немного поковырялся в сети Интернет и нашел достаточно интересных вариантов, в том числе как платных, так и бесплатных. Особенно мне приглянулся компонент PicShow, который является бесплатным и имеет в свое вооружении более 176 различных эффектов (переходов между слайдами, картинками). Особых проблем с установкой компонента не было, а также не было и проблем с его работой, ведь в архив с компонентом было отличное демо, представленное разработчиками, по которому можно сделать отличный собственный проект и понять, как компонент PicShow работает.

Начнем со скачивания компонента, а затем его установки. Скачать можно с официального сайта, пройдя по следующей ссылке. С установкой также не должно быть проблем, так как внутри архива (или на сайте) имеется отличная инструкция для установки. Но если все делать по-быстрому, то  заходим Component-Install Component, переходим во вкладку Into new package и там указываем путь к нашим pas-файлам компонента PicShow, после чего устанавливаем как обычный компонент и у нас должна появится новая вкладку Delphi Area, на которой и размещены:

  • TPicShow
  • TDBPicShow

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

PicShow1.StyleName:=’имя эффекта слайда’;
PicShow1.Picture.LoadFromFile(Filenames.Strings[count]);
PicShow1.Execute;

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

Для получения полного списка эффектов слайдов, можно воспользоваться следующей функцией:

GetStyleNames(Names: TStrings):Integer

Она возвратит список эффектов слайдов, которые Вы можете использовать в своем проекте, чтобы не прописывать их вручную. Кроме этого, можно задавать не имя самого эффекта, а его номер, это делается при помощи свойства Style:TShowStyle.

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

picshow_delphi

Читать на сайте автора.