<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Компьютер - это просто!!!</title>
		<link>http://basicsprog.ucoz.ru/</link>
		<description>Программирование на Delphi и многое другое...</description>
		<lastBuildDate>Sun, 12 Feb 2012 15:16:33 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://basicsprog.ucoz.ru/blog/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Перетаскивание имен файлов из проводника в ListBox с помощью мыши (Drag&amp;Drop).</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Перетаскивание имен файлов из проводника в ListBox с помощью мыши (Drag&amp;amp;Drop)&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;div align=&quot;left&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/drag_drop/1_1.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Очень часто в таких программах, как аудио и видео плееры необходимо сделать загрузку плейлиста, путем перетаскивания файлов прямо из проводника. Такая технология называется &lt;b&gt;Drag-and-drop&lt;/b&gt; (в переводе с английского означает буквально тащи-и-бросай; Бери-и-Брось). В сегодняшней статье я покажу как это можно сделать в &lt;b&gt;Delphi&lt;/b&gt;, на примере загрузки &lt;b&gt;mp3&lt;/b&gt; файлов в &lt;b&gt;ListBox&lt;/b&gt; из проводника, путем перетаскивания их мышкой. Для этого в начале познакомимся с функцией &lt;b&gt;DragQueryFile.&lt;/b&gt; Функция за декларирована в модуле &lt;b&gt;ShellApi.&lt;/b&gt; &lt;br&gt;&lt;br&gt;Данная функция извлека...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Перетаскивание имен файлов из проводника в ListBox с помощью мыши (Drag&amp;amp;Drop)&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;div align=&quot;left&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/drag_drop/1_1.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Очень часто в таких программах, как аудио и видео плееры необходимо сделать загрузку плейлиста, путем перетаскивания файлов прямо из проводника. Такая технология называется &lt;b&gt;Drag-and-drop&lt;/b&gt; (в переводе с английского означает буквально тащи-и-бросай; Бери-и-Брось). В сегодняшней статье я покажу как это можно сделать в &lt;b&gt;Delphi&lt;/b&gt;, на примере загрузки &lt;b&gt;mp3&lt;/b&gt; файлов в &lt;b&gt;ListBox&lt;/b&gt; из проводника, путем перетаскивания их мышкой. Для этого в начале познакомимся с функцией &lt;b&gt;DragQueryFile.&lt;/b&gt; Функция за декларирована в модуле &lt;b&gt;ShellApi.&lt;/b&gt; &lt;br&gt;&lt;br&gt;Данная функция извлекает имена перемещенных мышью файлов. Ниже приведено описание функции:&lt;br&gt;&lt;br&gt;&lt;b&gt;DragQueryFile&lt;/b&gt; ( &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;hDrop: Integer&lt;/b&gt; , // дескриптор структуры для перемещенных файлов &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;iFile: Cardinal &lt;/b&gt;, // индекс запрошенного файла &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; lpszFile:PWideChar&lt;/b&gt; , // буфер для имени файла &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;cch:Cardinal&amp;nbsp;&lt;/b&gt; // размер буфера для имени файла &lt;br&gt;&amp;nbsp; ): &lt;b&gt;Cardinal;&lt;/b&gt; &lt;br&gt;&lt;br&gt;&lt;b&gt;Параметры:&lt;/b&gt;&lt;br&gt;&lt;b&gt;hDrop&lt;/b&gt; - идентифицирует структуру, содержащую имена файлов. &lt;br&gt;&lt;b&gt;iFile &lt;/b&gt;- определяет индекс запрашиваемого файла. Если значение параметра&lt;b&gt; iFile&lt;/b&gt; равно &lt;b&gt;0xFFFFFFFF&lt;/b&gt; , &lt;b&gt;DragQueryFile &lt;/b&gt;возвращает число перемещенных файлов. Если значение параметра&lt;b&gt; iFile&lt;/b&gt; лежит между нулем и количеством перемещенных файлов, &lt;b&gt;DragQueryFile&lt;/b&gt; копирует соответствующее значению им файла в буфер, указанный параметром&lt;b&gt; lpszFile&lt;/b&gt; . &lt;br&gt;&lt;b&gt;lpszFile&lt;/b&gt; - указывает на буфер для имени перемещенного файла. Им файла представляет собой завершающуюся нулем строку. Если значение&lt;b&gt; lpszFile&lt;/b&gt; равно &lt;b&gt;NULL&lt;/b&gt; , &lt;b&gt;DragQueryFile&lt;/b&gt; возвращает необходимый размер буфера в символах. &lt;br&gt;&lt;b&gt;cch&lt;/b&gt; - определяет размер буфера в символах. &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Приступим к созданию нашего проекта.&lt;br&gt;Запускаем &lt;b&gt;Delphi&lt;/b&gt; и создаем новое приложение. На форме размещаем компонент &lt;b&gt;TListBox&lt;/b&gt; из вкладки &lt;b&gt;Standard&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;перетаскивание файлов&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/drag_drop/1.jpg&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;b&gt;Затем переходим к написанию кода.&lt;/b&gt;&lt;br&gt;&lt;br&gt;В разделе &lt;b&gt;Uses&lt;/b&gt; добавим модуль &lt;b&gt;ShellAPI&lt;/b&gt;.&lt;br&gt;&lt;br&gt;В разделе&amp;nbsp;&lt;b&gt; private&lt;/b&gt; добавим следующий код:&lt;br&gt;&lt;br&gt;&lt;b&gt;//получение сообщений о переносе файла в окно приложения&lt;/b&gt;&lt;br&gt;procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;&lt;br&gt;&lt;br&gt;В разделе &lt;b&gt;implementation&lt;/b&gt; добавим описание данной процедуры:&lt;br&gt;&lt;br&gt;&lt;b&gt;//процедура извлечения имен файлов при перетаскивании&lt;/b&gt;&lt;br&gt;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);&lt;br&gt;var&lt;br&gt;&amp;nbsp; i: integer;&lt;b&gt;//счетчик файлов&lt;/b&gt;&lt;br&gt;&amp;nbsp; CountFile: integer;&lt;b&gt;//Количество файлов&lt;/b&gt;&lt;br&gt;&amp;nbsp; size: integer;&lt;b&gt;//длина строки, содержащей путь к файлу&lt;/b&gt;&lt;br&gt;&amp;nbsp; Filename: PChar;&lt;b&gt; //указатель на имя файла&lt;/b&gt;&lt;br&gt;begin&lt;br&gt;try&lt;br&gt;&amp;nbsp; &lt;b&gt;//Функция DragQueryFile извлекает имена перемещенных мышью файлов&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;b&gt; //получаем количество перемещаемых файлов&lt;/b&gt;&lt;br&gt;&amp;nbsp; CountFile := DragQueryFile(Msg.Drop, $FFFFFFFF, Filename, 255);&lt;br&gt;&amp;nbsp;&lt;b&gt; //извлекаем пути до перемещаемых файлов и добавляем их в ListBox&lt;/b&gt;&lt;br&gt;&amp;nbsp; for i := 0 to (CountFile - 1) do&lt;br&gt;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; //получаем длину строки, содержащей путь к файлу&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; size := DragQueryFile(Msg.Drop, i , nil, 0)+1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;//выделяем память под строку с именем файла&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filename:= StrAlloc(size);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;//получаем непосредственно само имя файла и путь&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DragQueryFile(Msg.Drop,i , Filename, size);&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp; //добавляем его в ListBox&amp;nbsp; если расширение файла = &apos;.mp3&apos;&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;//функция lowercase понижает регистр символов&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lowercase(ExtractFileExt(StrPas(filename)))=&apos;.mp3&apos; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; listbox1.items.add(StrPas(Filename));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; //освобождаем строку&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; StrDispose(Filename);&lt;br&gt;&amp;nbsp; end;&lt;br&gt;finally&lt;br&gt;&amp;nbsp; DragFinish(Msg.Drop);&lt;b&gt; // отпуститим файл&lt;/b&gt;&lt;br&gt;end;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;Ну и в событии &lt;b&gt;OnCreate&lt;/b&gt; формы добавим код, говорящий нашему&lt;b&gt; ListBox&lt;/b&gt;, что он должен принимать файлы.&lt;br&gt;&lt;br&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&lt;b&gt;//регистрируем, что окно ListBox1 будет принимать файлы&lt;/b&gt;&lt;br&gt;&amp;nbsp; DragAcceptFiles(Form1.ListBox1.Handle, True);&lt;br&gt;&lt;b&gt;//Внимание если ListBox располагается на панели то для регистрации пишем&lt;/b&gt;&lt;br&gt;//DragAcceptFiles(Form1.Handle, True);&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&lt;b&gt;Сохраняем и тестируем проект.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Перетаскивание файлов из проводника с помощью мыши&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/drag_drop/2.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;А если к нашему проекту добавить следующую процедуру, которая выложена на просторах Интернета, то можно и целые папки перетаскивать в&lt;b&gt; ListBox&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&lt;b&gt;//процедура, позволяющая добавить список mp3 файлов из любой папки в ListBox1&lt;/b&gt;&lt;br&gt;&lt;b&gt;//в процедуру при вызове необходимо передать путь к папке с файлами&lt;/b&gt;&lt;br&gt;procedure GetAllFiles( Path: string);&lt;br&gt;var&lt;br&gt;sRec: TSearchRec;&lt;br&gt;isFound: boolean;&lt;br&gt;begin&lt;br&gt;isFound := FindFirst( Path + &apos;&amp;#92;*.*&apos;, faAnyFile, sRec ) = 0;&lt;br&gt;while isFound do&lt;br&gt;begin&lt;br&gt;if ( sRec.Name &lt;&amp;gt; &apos;.&apos; ) and ( sRec.Name &lt;&amp;gt; &apos;..&apos; ) then&lt;br&gt;begin&lt;br&gt;if ( sRec.Attr and faDirectory ) = faDirectory then&lt;br&gt;GetAllFiles( Path + &apos;&amp;#92;&apos; + sRec.Name);&lt;br&gt;&lt;b&gt;//условие, проверки, что файл является mp3 файлом, если эту строчку убрать, будут добавляться все файлы&lt;/b&gt;&lt;br&gt;if lowercase(ExtractFileExt(Path + &apos;&amp;#92;&apos; + sRec.Name))=&apos;.mp3&apos; then&lt;br&gt;ListBox1.Items.Add( Path + &apos;&amp;#92;&apos; + sRec.Name );&lt;br&gt;end;&lt;br&gt;Application.ProcessMessages;&lt;br&gt;isFound := FindNext( sRec ) = 0;&lt;br&gt;end;&lt;br&gt;FindClose( sRec );&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&lt;b&gt;Пример ее подключения есть в исходниках к статье.&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;b&gt;Скачать исходник к статье можно &lt;a title=&quot;Исходник&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/drag_drop/drag_drop.zip&quot;&gt;здесь&lt;/a&gt;.&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2012-02-12-12</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2012-02-12-12</guid>
			<pubDate>Sun, 12 Feb 2012 15:16:33 GMT</pubDate>
		</item>
		<item>
			<title>Работаем с базой данных КЛАДР (классификатор адресов России) из Delphi.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;Работаем&lt;i&gt; &lt;/i&gt;с базой данных КЛАДР (классификатор адресов России) из Delphi.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/i.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; При проектировании базы&amp;nbsp; данных&amp;nbsp; довольно часто приходится предусматривать возможность ввода в базу различных адресов (например: адрес места жительства, адрес предприятия и т.д.). В сегодняшнем посту я хочу познакомить вас с классификатором адресов России (&lt;b&gt;КЛАДР&lt;/b&gt;). Последнюю версию базы данных &lt;b&gt;КЛАДР&lt;/b&gt; можно скачать с сайта федеральной налоговой службы России &lt;b&gt;http://www.gnivc.ru/inf_provision/classifiers_reference/kladr/&lt;/b&gt;. База поставляется в виде архива с файлами в формате &lt;b&gt;dbf&lt;/b&gt;. &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В этой статье мы научимся&amp;nbsp; конвертировать базу &lt;b&gt;КЛАДР&lt;/b&gt; из формата &lt;b&gt;dbf&lt;/b&gt; в формат файлов &lt;b&gt;...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;Работаем&lt;i&gt; &lt;/i&gt;с базой данных КЛАДР (классификатор адресов России) из Delphi.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/i.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; При проектировании базы&amp;nbsp; данных&amp;nbsp; довольно часто приходится предусматривать возможность ввода в базу различных адресов (например: адрес места жительства, адрес предприятия и т.д.). В сегодняшнем посту я хочу познакомить вас с классификатором адресов России (&lt;b&gt;КЛАДР&lt;/b&gt;). Последнюю версию базы данных &lt;b&gt;КЛАДР&lt;/b&gt; можно скачать с сайта федеральной налоговой службы России &lt;b&gt;http://www.gnivc.ru/inf_provision/classifiers_reference/kladr/&lt;/b&gt;. База поставляется в виде архива с файлами в формате &lt;b&gt;dbf&lt;/b&gt;. &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В этой статье мы научимся&amp;nbsp; конвертировать базу &lt;b&gt;КЛАДР&lt;/b&gt; из формата &lt;b&gt;dbf&lt;/b&gt; в формат файлов &lt;b&gt;Microsoft Access 2003 – 2007.&lt;/b&gt; И с помощью &lt;b&gt;Delphi &lt;/b&gt;подключаться к этой базе и выбирать нужный нам адрес.&lt;br&gt;&lt;br&gt;И&amp;nbsp; так приступим…&lt;br&gt;&lt;br&gt;Скачиваем базу &lt;b&gt;КЛАДР &lt;/b&gt;с выше указанного адреса, распаковываем. &lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работаем с базой данных КЛАДР (классификатор адресов России) из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/1.jpg&quot;&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;Запускаем &lt;b&gt;Microsoft Access&lt;/b&gt;. Выбираем открыть. &lt;b&gt;Тип файлов -&amp;gt; все файлы&lt;/b&gt;,&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работаем с базой данных КЛАДР (классификатор адресов России) из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/2.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;выбираем файл &lt;b&gt;STREET.DBF&lt;/b&gt; и нажимаем открыть. Затем снова выбираем открыть. Тип файлов -&amp;gt; все файлы и выбираем следующий файл&amp;nbsp; &lt;b&gt;DBF&lt;/b&gt;. И так делаем со всеми файлами и закрываем &lt;b&gt;MS Access&lt;/b&gt;. Если вы все сделали правильно то в папке с &lt;b&gt;КЛАДР &lt;/b&gt;должны появится следующие файлы в формате &lt;b&gt;MS Access&lt;/b&gt;:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работаем с базой данных КЛАДР (классификатор адресов России) из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/3.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Сейчас двойным кликом мыши открываем файл &lt;b&gt;STREET.accdb&lt;/b&gt;. Затем запускаем еще одну копию &lt;b&gt;MS Access.&lt;/b&gt; В ней выбираем &lt;b&gt;Создать:&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работаем с базой данных КЛАДР (классификатор адресов России) из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/4.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;указываем путь и задаем имя файла &lt;b&gt;kladr.mdb&lt;/b&gt; и жмем кнопку создать. В открывшемся окне удаляем &lt;b&gt;Таблицу1&lt;/b&gt; и перетаскиваем в него нашу таблицу &lt;b&gt;STREET.accdb&amp;nbsp;&lt;/b&gt; из уже запущенного &lt;b&gt;MS Access.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;В этой статье мы научимся конвертировать базу КЛАДР из формата dbf в формат файлов Microsoft Access 2003 – 2007. &quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/5.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Затем не закрывая нашу базу &lt;b&gt;kladr.mdb &lt;/b&gt;мы последовательно открываем все файлы с расширением &lt;b&gt;accdb&lt;/b&gt; и перетаскиваем их в базу &lt;b&gt;kladr.mdb&lt;/b&gt;. В итоге должно получиться следующее:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;В этой статье мы научимся конвертировать базу КЛАДР из формата dbf в формат файлов Microsoft Access 2003 – 2007. &quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/6.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;Закрываем базу &lt;b&gt;кладр&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Сейчас немного о структуре самого &lt;b&gt;КЛАДР&lt;/b&gt;.&lt;br&gt;Классификатор оформлен в виде следующих&lt;b&gt; DBF&lt;/b&gt;-файлов:&amp;nbsp; &lt;br&gt;&lt;b&gt;файл&lt;/b&gt; &lt;b&gt;Kladr.dbf&lt;/b&gt; – содержит записи с объектами первых четырех уровней классификации (регионы; районы (улусы); города, поселки городского типа, сельсоветы; сельские населенные пункты);&lt;br&gt;Структура кодового обозначения в блоке &quot;&lt;b&gt;Код&lt;/b&gt;&quot;:&lt;br&gt;&lt;b&gt;СС РРР ГГГ ППП АА&lt;/b&gt;, где&lt;br&gt;&lt;b&gt;СС &lt;/b&gt;– код субъекта Российской Федерации (региона), коды регионов представлены в Приложении 2 к Описанию классификатора адресов Российской Федерации (&lt;b&gt;КЛАДР)&lt;/b&gt;;&lt;br&gt;&lt;b&gt;РРР&lt;/b&gt; – код района;&lt;br&gt;&lt;b&gt;ГГГ&lt;/b&gt; – код города;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;b&gt;ППП &lt;/b&gt;– код населенного пункта,&lt;br&gt;&lt;b&gt;АА&lt;/b&gt; – признак актуальности адресного объекта.&lt;br&gt;&lt;br&gt;Признак актуальности может принимать следующие значения:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&quot;00” &lt;/b&gt;– актуальный объект (его наименование, подчиненность соответствуют состоянию на данный момент адресного пространства). &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&quot;01”-&quot;50” &lt;/b&gt;– объект был переименован, в данной записи приведено одно из прежних его наименований (актуальный адресный объект присутствует в базе данных с тем же кодом, но с признаком актуальности &lt;b&gt;&quot;00”&lt;/b&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; &quot;51”&lt;/b&gt; –&amp;nbsp; объект был переподчинен или влился в состав другого объекта (актуальный адресный объект определяется по базе &lt;b&gt;Altnames.dbf&lt;/b&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&quot;52”-&quot;98”&lt;/b&gt; – резервные значения признака актуальности;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;”99” &lt;/b&gt;– адресный объект не существует, т.е. нет соответствующего ему актуального адресного объекта.&lt;br&gt;&lt;b&gt;файл Street.dbf &lt;/b&gt;– содержит записи с объектами пятого уровня классификации (улицы городов и населенных пунктов);&lt;br&gt;Структура кодового обозначения в блоке &quot;&lt;b&gt;Код&lt;/b&gt;&quot;:&lt;br&gt;&lt;b&gt;СС РРР ГГГ ППП УУУУ АА&lt;/b&gt;, где&lt;br&gt;&lt;b&gt;СС&lt;/b&gt; – код субъекта Российской Федерации (&lt;b&gt;региона&lt;/b&gt;), коды регионов представлены в Приложении 2 к Описанию классификатора адресов Российской Федерации (&lt;b&gt;КЛАДР&lt;/b&gt;);&lt;br&gt;&lt;b&gt;РРР &lt;/b&gt;– код района;&lt;br&gt;&lt;b&gt;ГГГ &lt;/b&gt;– код города;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;b&gt;ППП &lt;/b&gt;– код населенного пункта;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;b&gt;УУУУ&lt;/b&gt; – код улицы;&lt;br&gt;&lt;b&gt;АА&lt;/b&gt; – признак актуальности наименования адресного объекта.&lt;br&gt;&lt;br&gt;&lt;b&gt;файл Doma.dbf&lt;/b&gt; – содержит записи с объектами шестого уровня классификации (номера домов улиц городов и населенных пунктов);&lt;br&gt;&lt;b&gt;файл Flat.dbf&lt;/b&gt; – содержит записи с объектами седьмого уровня классификации (номера квартир домов);&lt;br&gt;&lt;b&gt;файл Socrbase.dbf&lt;/b&gt; – содержит записи с краткими наименованиями типов адресных объектов;&lt;br&gt;&lt;b&gt;файл Altnames.dbf&lt;/b&gt; –содержит сведения о соответствии кодов записей со старыми и новыми наименованиями адресных объектов, а также сведения о соответствии кодов адресных объектов до и после их переподчинения.&lt;br&gt;Более подробно у структуре классификатора можно узнать из справки, которая поставляется вместе с ним.&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; А сейчас приступим к написанию простейшего приложения, которое позволит сформировать интересующий нас адрес.&lt;br&gt;Запустим &lt;b&gt;Delphi&lt;/b&gt; и создадим новое приложение. Создадим папку и сохраним в нее наше приложение. Скопируем в эту папку наш созданный в &lt;b&gt;MS Access&lt;/b&gt; файл &lt;b&gt;kladr.mdb&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&amp;nbsp;Далее приступим к созданию формы:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/7.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;Разместим на форме следующие компоненты:&lt;br&gt;- Четыре компонента &lt;b&gt;TDBLookupComboBox&lt;/b&gt;;&lt;br&gt;- Три компонента &lt;b&gt;TEdit&lt;/b&gt;;&lt;br&gt;- Четыре компонента &lt;b&gt;TADOQuery&lt;/b&gt;;&lt;br&gt;- Четыре компонента &lt;b&gt;TDataSource&lt;/b&gt;;&lt;br&gt;- Компонент &lt;b&gt;TADOConnection&lt;/b&gt;;&lt;br&gt;и шесть компонентов&lt;b&gt; TLabel&lt;/b&gt;.&lt;br&gt;Все компоненты разместим и переименуем, как показано на рисунке.&lt;br&gt;&lt;br&gt;Далее сделаем подключение через компонент&lt;b&gt; ADOConnectio1&lt;/b&gt; к нашей базе&lt;b&gt; kladr.mdb&lt;/b&gt;. Для этого выберем свойство &lt;b&gt;ConnectionString&lt;/b&gt; в открывшемся окне выберем &lt;b&gt;Build…--&amp;gt;&lt;/b&gt; затем &lt;b&gt;Microsoft Jet 4.0 OLE DB Provider --&amp;gt;&lt;/b&gt; затем далее и в открывшемся окне:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Далее сделаем подключение через компонент ADOConnectio1 к нашей базе.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/kladr/8.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;выбираем путь к нашей базе (затем путь можно удалить и оставить только имя &lt;b&gt;kladr.mdb&lt;/b&gt;, чтобы убрать привязку к конкретному пути). Жмем &lt;b&gt;ОК.&lt;/b&gt; Затем свойство &lt;b&gt;LoginPrompt &lt;/b&gt;устанавливаем &lt;b&gt;False&lt;/b&gt;, свойство &lt;b&gt;Connected -&amp;gt;True&lt;/b&gt;.&lt;br&gt;На этом подключение закончено. Переходим к настройке других компонентов. Выбираем компонент &lt;b&gt;region_source&lt;/b&gt; и свойство &lt;b&gt;DataSet --&amp;gt; kladr_region&lt;/b&gt;. Выбираем компонент &lt;b&gt;kladr_region&lt;/b&gt; и свойство &lt;b&gt;Connection&lt;/b&gt; устанавливаем &lt;b&gt;ADOConnection1&lt;/b&gt;. В свойство &lt;b&gt;SQL-&amp;gt; TStrings…-&amp;gt;&lt;/b&gt; пишем следующий запрос: &lt;br&gt;&lt;br&gt;&lt;b&gt;SELECT *&lt;br&gt;FROM KLADR&lt;br&gt;WHERE (((KLADR.CODE) Like &apos;__000000000__&apos;));&lt;/b&gt;&lt;br&gt;&lt;br&gt;В этом запросе я выбираю из таблицы &lt;b&gt;kladr&lt;/b&gt; все поля по условию &lt;b&gt;Like &apos;__000000000__&apos;&lt;/b&gt; для поля &lt;b&gt;CODE&lt;/b&gt;. В команде &lt;b&gt;Like&lt;/b&gt; &lt;b&gt;&apos;__000000000__&apos;&lt;/b&gt;, &lt;b&gt;_ &lt;/b&gt;обозначает произвольный символ. Поэтому мы ищем произвольный код субъекта федерации (первые два символа кода) и произвольный признак актуальности (последние два символа).&lt;br&gt;Свойство &lt;b&gt;Active&lt;/b&gt; устанавливаем &lt;b&gt;True&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Затем переходим к настройке компонента &lt;b&gt;DBLookupComboBox1.&lt;/b&gt; Свойство &lt;b&gt;ListSource -&amp;gt; region_source&lt;/b&gt;, свойство &lt;b&gt;ListField-&amp;gt; NAME;SOCR&lt;/b&gt; свойство &lt;b&gt;KeyField-&amp;gt;CODE&lt;/b&gt;.&lt;br&gt;&lt;br&gt;Для события &lt;b&gt;OnCloseUp&lt;/b&gt; пишем следующий код:&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;br&gt;&lt;/b&gt;procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&lt;b&gt;//формируем запрос с параметрами на выбор района&lt;/b&gt;&lt;br&gt;street.Active:=false;&lt;b&gt;//выключаем запрос&lt;/b&gt;&lt;br&gt;kladr_gorod.Active:=false;&lt;b&gt;//выключаем запрос&lt;/b&gt;&lt;br&gt;kladr_raion.Active:=false; &lt;b&gt;//выключаем запрос&lt;/b&gt;&lt;br&gt;kladr_raion.SQL.Clear; &lt;b&gt;//очищаем запрос&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.AddParameter.Name:=&apos;a&apos;; &lt;b&gt;//добавляем параметр &apos;a&apos;&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;a&apos;).DataType:=ftWideString;&lt;b&gt;//задаем тип параметра&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.AddParameter.Name:=&apos;b&apos;; &lt;b&gt;// добавляем параметр &apos;b&apos;&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;b&apos;).DataType:=ftWideString; &lt;b&gt;//задаем тип параметра&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.AddParameter.Name:=&apos;c&apos;; &lt;b&gt;// добавляем параметр &apos;c&apos;&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;c&apos;).DataType:=ftWideString; &lt;b&gt;//задаем тип параметра&lt;/b&gt;&lt;br&gt;&lt;b&gt;//формируем запрос&lt;/b&gt;&lt;br&gt;kladr_raion.SQL.Add(&apos;SELECT *&apos;);&lt;br&gt;kladr_raion.SQL.Add(&apos;FROM KLADR&apos;);&lt;br&gt;kladr_raion.SQL.Add(&apos;WHERE (((KLADR.CODE Like :a Or KLADR.CODE Like :c)) And Not ((KLADR.CODE) Like :b));&apos;);&lt;br&gt;&lt;b&gt;//в параметре &apos;а&apos; выбираем по коду региона все районы&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;a&apos;).Value:=copy(region_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,2)+&apos;___000000__&apos;;&lt;br&gt;&lt;b&gt;//параметр &apos;b&apos; нужен для исключения из списка самого региона&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;b&apos;).Value:=copy(region_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,2)+&apos;000000000__&apos;;&lt;br&gt;&lt;b&gt;//параметр &apos;c&apos; нужен для выбора городов и населенных пунктов не входящих в районы&lt;/b&gt;&lt;br&gt;kladr_raion.Parameters.ParamByName(&apos;c&apos;).Value:=copy(region_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,2)+&apos;000________&apos;;&lt;br&gt;&lt;b&gt;//активируем запрос&lt;/b&gt;&lt;br&gt;kladr_raion.Active:=true;&lt;br&gt;&lt;br&gt;&lt;b&gt;//формируем запрос с параметрами на выбор названия улицы&lt;/b&gt;&lt;br&gt;street.Active:=false;&lt;br&gt;street.SQL.Clear;&lt;br&gt;street.Parameters.AddParameter.Name:=&apos;a&apos;;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).DataType:=ftWideString;&lt;br&gt;street.SQL.Add(&apos;SELECT *&apos;);&lt;br&gt;street.SQL.Add(&apos;FROM STREET&apos;);&lt;br&gt;street.SQL.Add(&apos;WHERE (((STREET.CODE) Like :a));&apos;);&lt;br&gt;&lt;b&gt;//в параметре &apos;а&apos; выбираем по коду населенного пункта все улицы в нем&lt;/b&gt;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).Value:=copy(region_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,11)+&apos;______&apos;;&lt;br&gt;&lt;br&gt;&lt;b&gt;//активируем запрос&lt;/b&gt;&lt;br&gt;street.Active:=true;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Выбираем компонент &lt;b&gt;raion_source&lt;/b&gt; и свойство &lt;b&gt;DataSet --&amp;gt; kladr_raion&lt;/b&gt;. Выбираем компонент &lt;b&gt;kladr_raion&lt;/b&gt; и свойство &lt;b&gt;Connection &lt;/b&gt;устанавливаем &lt;b&gt;ADOConnection1.&lt;/b&gt;&lt;br&gt;Затем переходим к настройке компонента &lt;b&gt;DBLookupComboBox2&lt;/b&gt;. Свойство &lt;b&gt;ListSource -&amp;gt; raion _source&lt;/b&gt;, свойство &lt;b&gt;ListField-&amp;gt; NAME;SOCR&lt;/b&gt; свойство&lt;b&gt; KeyField-&amp;gt;CODE.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Для события &lt;b&gt;OnCloseUp&lt;/b&gt; пишем следующий код:&lt;br&gt;&lt;br&gt;procedure TForm1.DBLookupComboBox2CloseUp(Sender: TObject);&lt;br&gt;begin&lt;br&gt;street.Active:=false;&lt;br&gt;kladr_gorod.Active:=false;&lt;br&gt;&lt;b&gt;//проверяем, если был выбран не город (населенный пункт),&lt;br&gt;//то формируем запрос на выбор населенного пункта&lt;/b&gt;&lt;br&gt;if copy(raion_source.DataSet.FieldByName(&apos;CODE&apos;).Value,3,3)&lt;&amp;gt;&apos;000&apos; then&lt;br&gt;begin&lt;br&gt;&lt;b&gt;//формируем запрос с параметрами на выбор населенного пункта&lt;/b&gt;&lt;br&gt;kladr_gorod.SQL.Clear;&lt;br&gt;kladr_gorod.Parameters.AddParameter.Name:=&apos;a&apos;;&lt;br&gt;kladr_gorod.Parameters.ParamByName(&apos;a&apos;).DataType:=ftWideString;&lt;br&gt;kladr_gorod.Parameters.AddParameter.Name:=&apos;b&apos;;&lt;br&gt;kladr_gorod.Parameters.ParamByName(&apos;b&apos;).DataType:=ftWideString;&lt;br&gt;kladr_gorod.SQL.Add(&apos;SELECT *&apos;);&lt;br&gt;kladr_gorod.SQL.Add(&apos;FROM KLADR&apos;);&lt;br&gt;kladr_gorod.SQL.Add(&apos;WHERE ((KLADR.CODE Like :a And Not ((KLADR.CODE) Like :b)));&apos;);&lt;br&gt;&lt;b&gt;//в параметре &apos;а&apos; выбираем по коду района все населенные пункты&lt;/b&gt;&lt;br&gt;kladr_gorod.Parameters.ParamByName(&apos;a&apos;).Value:=copy(raion_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,5)+&apos;________&apos;;&lt;br&gt;&lt;b&gt;//параметр &apos;b&apos; нужен для исключения из списка самого района&lt;/b&gt;&lt;br&gt;kladr_gorod.Parameters.ParamByName(&apos;b&apos;).Value:=copy(raion_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,5)+&apos;000000__&apos;;&lt;br&gt;&lt;b&gt;//активируем запрос&lt;/b&gt;&lt;br&gt;kladr_gorod.Active:=true;&lt;br&gt;end;&lt;br&gt;&lt;b&gt;//формируем запрос с параметрами на выбор названия улицы&lt;/b&gt;&lt;br&gt;street.Active:=false;&lt;br&gt;street.SQL.Clear;&lt;br&gt;street.Parameters.AddParameter.Name:=&apos;a&apos;;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).DataType:=ftWideString;&lt;br&gt;street.SQL.Add(&apos;SELECT *&apos;);&lt;br&gt;street.SQL.Add(&apos;FROM STREET&apos;);&lt;br&gt;street.SQL.Add(&apos;WHERE (((STREET.CODE) Like :a));&apos;);&lt;br&gt;&lt;b&gt;//в параметре &apos;а&apos; выбираем по коду населенного пункта все улицы в нем&lt;/b&gt;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).Value:=copy(raion_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,11)+&apos;______&apos;;&lt;br&gt;&lt;b&gt;//активируем запрос&lt;/b&gt;&lt;br&gt;street.Active:=true;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Выбираем компонент &lt;b&gt;gorod_source&lt;/b&gt; и свойство &lt;b&gt;DataSet --&amp;gt; kladr_gorod&lt;/b&gt;. Выбираем компонент &lt;b&gt;kladr_gorod&lt;/b&gt; и свойство &lt;b&gt;Connection&lt;/b&gt; устанавливаем &lt;b&gt;ADOConnection1.&lt;/b&gt;&lt;br&gt;Затем переходим к настройке компонента &lt;b&gt;DBLookupComboBox3.&lt;/b&gt; Свойство &lt;b&gt;ListSource-&amp;gt; gorod_source&lt;/b&gt;, свойство &lt;b&gt;ListField-&amp;gt; NAME;SOCR&lt;/b&gt; свойство &lt;b&gt;KeyField-&amp;gt;CODE.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Для события&lt;b&gt; OnCloseUp&lt;/b&gt; пишем следующий код:&lt;br&gt;&lt;br&gt;&lt;b&gt;procedure TForm1.DBLookupComboBox3CloseUp(Sender: TObject);&lt;br&gt;begin&lt;/b&gt;&lt;br&gt;&lt;b&gt;//формируем запрос с параметрами на выбор названия улицы&lt;/b&gt;&lt;br&gt;street.Active:=false;&lt;br&gt;street.SQL.Clear;&lt;br&gt;street.Parameters.AddParameter.Name:=&apos;a&apos;;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).DataType:=ftWideString;&lt;br&gt;street.SQL.Add(&apos;SELECT *&apos;);&lt;br&gt;street.SQL.Add(&apos;FROM STREET&apos;);&lt;br&gt;street.SQL.Add(&apos;WHERE (((STREET.CODE) Like :a));&apos;);&lt;br&gt;&lt;b&gt;//в параметре &apos;а&apos; выбираем по коду населенного пункта все улицы в нем&lt;/b&gt;&lt;br&gt;street.Parameters.ParamByName(&apos;a&apos;).Value:= copy(gorod_source.DataSet.FieldByName(&apos;CODE&apos;).Value,1,11)+ &apos;______&apos;;&lt;br&gt;street.Active:=true;&lt;br&gt;&lt;b&gt;end;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Выбираем компонент street_source и свойство &lt;b&gt;DataSet --&amp;gt; street&lt;/b&gt;. Выбираем компонент &lt;b&gt;street&lt;/b&gt; и свойство &lt;b&gt;Connection &lt;/b&gt;устанавливаем&lt;b&gt; ADOConnection1.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Затем переходим к настройке компонента&lt;b&gt; DBLookupComboBox4&lt;/b&gt;. Свойство &lt;b&gt;ListSource -&amp;gt;street_source,&lt;/b&gt; свойство &lt;b&gt;ListField-&amp;gt; NAME;SOCR&lt;/b&gt; свойство &lt;b&gt;KeyField-&amp;gt;CODE.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; К сожалению, работать с номерами домов на много сложнее, поэтому их быстрее забить руками.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Для увеличения скорости обработки запросов базу &lt;b&gt;КЛАДР&lt;/b&gt; можно почистить, например удалить все не актуальные объекты (&lt;b&gt;признак актуальности&lt;/b&gt; в коде не &lt;b&gt;равен 00&lt;/b&gt;) и т.д.&lt;br&gt;&lt;br&gt;Данный код предназначен лишь для демонстрации составления запросов для выбора адресов из базы КЛАДР. В полне возможно, что я мог что то упустить т.к. структура КЛАДР довольно сложная и учесть все нюансы в рамках небольшого примера практически невозможно.&lt;br&gt;&lt;br&gt;&lt;b&gt;Скачать исходники к статье можно &lt;a title=&quot;Исходники к статье&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/kladr/kladr.7z&quot;&gt;здесь&lt;/a&gt;.&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;b&gt;Автор статьи &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;xaramamburu&lt;/span&gt;, сайт автора &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;http://basicsprog.ucoz.ru&lt;/span&gt; .&lt;br&gt;&lt;br&gt;

&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-11-14-11</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-11-14-11</guid>
			<pubDate>Mon, 14 Nov 2011 14:30:42 GMT</pubDate>
		</item>
		<item>
			<title>Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;div align=&quot;left&quot;&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel3/i.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В предыдущем посту мы научились, подключать таблицу &lt;b&gt;MS Excel&lt;/b&gt; с помощью компонента &lt;b&gt;ADOConnection.&lt;/b&gt; В данной статье, используя подключение через компонент &lt;b&gt;ADOConnection&lt;/b&gt;, мы научимся загружать (экспортировать) данные из листа &lt;b&gt;MS Excel&lt;/b&gt; в базу данных созданную в &lt;b&gt;MS Access&lt;/b&gt;.&lt;br&gt;Данная статья будет полезна тем, кто в своей программе хочет использовать экспорт данных из &lt;br&gt;&lt;b&gt;MS Excel в &lt;/b&gt;&lt;b&gt;MS Access&lt;/b&gt;. Или просто хочет быстро заполнить свою базу данных из уже готовой таблицы&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Для начала создадим файл таблицу &lt;b&gt;MS Excel&lt;/b&gt;...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;div align=&quot;left&quot;&gt;&lt;img style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel3/i.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В предыдущем посту мы научились, подключать таблицу &lt;b&gt;MS Excel&lt;/b&gt; с помощью компонента &lt;b&gt;ADOConnection.&lt;/b&gt; В данной статье, используя подключение через компонент &lt;b&gt;ADOConnection&lt;/b&gt;, мы научимся загружать (экспортировать) данные из листа &lt;b&gt;MS Excel&lt;/b&gt; в базу данных созданную в &lt;b&gt;MS Access&lt;/b&gt;.&lt;br&gt;Данная статья будет полезна тем, кто в своей программе хочет использовать экспорт данных из &lt;br&gt;&lt;b&gt;MS Excel в &lt;/b&gt;&lt;b&gt;MS Access&lt;/b&gt;. Или просто хочет быстро заполнить свою базу данных из уже готовой таблицы&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Для начала создадим файл таблицу &lt;b&gt;MS Excel&lt;/b&gt; как показано на рисунке:&lt;br&gt;Первый ряд таблицы &lt;b&gt;MS Excel&lt;/b&gt; при экспорте в &lt;b&gt;MS Access&lt;/b&gt; служит полями базы данных.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel3/1.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;сохраним с именем 2&lt;b&gt;.xlsx&lt;/b&gt;.&lt;br&gt;Затем создадим базу данных&amp;nbsp; &lt;b&gt;MS Access&lt;/b&gt; с &lt;b&gt;таблицей t1&lt;/b&gt; как показано на рисунке:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel3/2.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;все поля текстового типа. Название полей&amp;nbsp; должны в точности соответствовать названием полей в &lt;b&gt;MS Exce&lt;/b&gt;l. Далее сохраняем базу данных с именем &lt;b&gt;bd.mdb в формате MS Access 2002-2003&lt;/b&gt;. И копируем созданные файлы в папку с будущим проектом.&lt;br&gt;Запускаем &lt;b&gt;Delphi&lt;/b&gt; и создаем новое приложение&amp;nbsp; &lt;b&gt;File -&amp;gt; New-&amp;gt; VCL Forms Application – Delphi.&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel3/3.jpg&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt;Размещаем на форме компонент кнопку &lt;b&gt;TButton&lt;/b&gt; из вкладки &lt;b&gt;Standard&lt;/b&gt;. Назовем ее Экспорт.&lt;br&gt;&lt;br&gt;Добавим компонент &lt;b&gt;TADOConnection&lt;/b&gt;&amp;nbsp; и &lt;b&gt;TADOQuery&lt;/b&gt; из вкладки &lt;b&gt;dbGo (ADO)&lt;/b&gt;.&lt;br&gt;&lt;br&gt;В инспекторе объектов для компонента &lt;b&gt;ADOConnection1&lt;/b&gt; выбираем свойство &lt;b&gt;ConnectionString&lt;/b&gt; и вписываем туда следующую строку для &lt;b&gt;MS Excel 2007&lt;/b&gt;: &lt;br&gt;&lt;br&gt;Provider =Microsoft.ACE.OLEDB.12.0; Data Source =2.xlsx; Extended Properties =&quot;Excel 12.0 Xml;HDR=YES&quot;; &lt;br&gt;&lt;br&gt;Файл &lt;b&gt;2.xlsx&lt;/b&gt; должен находиться в папке с приложением.&lt;br&gt;&lt;br&gt;При указании полного пути до файла:&lt;br&gt;Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:&amp;#92;myFolder&amp;#92;myExcel2007file.xlsx; Extended Properties =&quot;Excel 12.0 Xml;HDR=YES&quot;;&lt;br&gt;&lt;br&gt;Если у вас&amp;nbsp; &lt;b&gt;MS Excel 2003&lt;/b&gt; то вписываем&amp;nbsp; следующую строку:&lt;br&gt;&lt;br&gt;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=2.xls;Extended Properties=Excel 8.0;&lt;br&gt;&lt;br&gt;Файл &lt;b&gt;2.xls&lt;/b&gt; должен находиться в папке с приложением.&lt;br&gt;&lt;br&gt;&lt;b&gt;Другие способы подключение смотрите в предыдущем посту.&lt;/b&gt;&lt;br&gt;&lt;br&gt;После установки подключения убираем, галочку&amp;nbsp; со &lt;b&gt;свойства&lt;/b&gt; &lt;b&gt;LoginPromt&lt;/b&gt;, чтоб не запрашивал пароль при подключении.&lt;br&gt;&lt;br&gt;Перед запуском на выполнение, необходимо убрать галочки у компонента &lt;b&gt;ADOConnection1 -- &amp;gt;Connected&amp;nbsp;&lt;/b&gt; и у компонента &lt;b&gt;ADOQuery --&amp;gt; Active&lt;/b&gt; иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.&lt;br&gt;&lt;br&gt;Далее для события &lt;b&gt;OnClick кнопки «Экспорт»&lt;/b&gt; пишем следующий код:&lt;br&gt;&lt;br&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br&gt;begin&lt;br&gt;ADOQuery1.Active:=False;&lt;br&gt;ADOQuery1.SQL.Clear;&lt;br&gt;ADOQuery1.SQL.Add(&apos;insert into t1 IN bd.mdb select * from [Лист1$]&apos;);&lt;br&gt;ADOQuery1.ExecSQL;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;А для &lt;b&gt;события OnCreate формы&lt;/b&gt; пишем:&lt;br&gt;&lt;br&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br&gt;begin&lt;br&gt;ADOConnection1.Connected:=true;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;Сохраняем, запускаем на выполнение и проверяем содержимое базы данных.&lt;br&gt;&lt;br&gt;Теперь немножко по структуре запроса &lt;b&gt;&apos;insert into t1 IN bd.mdb select * from [Лист1$]&apos;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;INSERT INTO&lt;/b&gt; – означает, что запрос будет на добавление записей;&lt;br&gt;&lt;b&gt;t1&amp;nbsp;&lt;/b&gt; - таблица базы, в которую будем добавлять записи.&lt;br&gt;&lt;b&gt;IN&lt;/b&gt; путь к базе с именем базы. Если база расположена в папке с приложением, достаточно указать только имя базы данных.&lt;br&gt;&lt;b&gt;select *&lt;/b&gt; - означает, что выбираем все записи;&lt;br&gt;&lt;b&gt;from [Лист1$]&lt;/b&gt; – выбирать будем из таблицы &lt;b&gt;MS Excel Лист1&lt;/b&gt;. &lt;br&gt;&lt;br&gt;И еще&lt;b&gt; пример&lt;/b&gt; использования запроса&amp;nbsp; &lt;b&gt;INSERT INTO&lt;/b&gt;&amp;nbsp; на добавление новой записи в таблицу:&lt;br&gt;&lt;br&gt;&lt;b&gt;INSERT INTO users (login, pass) values(&apos;TestUser&apos;, &apos;123456&apos;) &lt;/b&gt;&lt;br&gt;&lt;br&gt;При добавлении записи вначале идёт команда &lt;b&gt;&quot;INSERT INTO&quot;&lt;/b&gt;, затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова &lt;b&gt;&quot;values&quot;&lt;/b&gt; начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись. &lt;br&gt;&lt;br&gt;В статье использованы материалы с сайта &lt;a href=&quot;http://devdelphi.ru/?p=90&quot; style=&quot;font-size: 8pt;&quot;&gt;http://devdelphi.ru/?p=90&lt;/a&gt; , там же можно найти более сложный вариант конвертации данных из&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;таблицы MS Ecxel в базу данных MS Access&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&amp;nbsp;а также другие статьи по работе с базой данных. &lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;br&gt;

&lt;a target=&quot;_blank&quot; class=&quot;mrc__plugin_uber_like_button&quot; href=&quot;http://connect.mail.ru/share&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot;&gt;Нравится&lt;/a&gt;
&lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;

&lt;div align=&quot;center&quot;&gt;Спасибо за внимание.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;b&gt;Скачать исходники к статье можно &lt;a title=&quot;Исходники к статье.&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/rabota_excel3/Excel.zip&quot;&gt;здесь.&lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Другие статьи по работе с MS Excel:&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;2011-09-30-8&quot;&gt;Работа с EXCEL из Delphi&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;2011-10-02-9&quot;&gt;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-10-02-10</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-10-02-10</guid>
			<pubDate>Sun, 02 Oct 2011 10:33:16 GMT</pubDate>
		</item>
		<item>
			<title>Учимся работать с MS Excel через подключение ADOConnection в Delphi.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;
&lt;p&gt;&lt;img align=&quot;left&quot; alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В предыдущем посте я рассказывал,&amp;nbsp; как работать с &lt;b&gt;MS Excel&lt;/b&gt; из &lt;b&gt;Delphi&lt;/b&gt; через &lt;b&gt;ComObj&lt;/b&gt; (&lt;b&gt;Com&lt;/b&gt; &lt;b&gt;объект&lt;/b&gt;).&lt;br /&gt;
В этой статье я расскажу, как подключить таблицу&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt; через компонент &lt;b&gt;ADOConnection&lt;/b&gt; в &lt;b&gt;Delphi&lt;/b&gt;. Из данной статьи вы сможете узнать о способах данного подключения. Как загрузить данные из таблицы&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt; в компонент &lt;b&gt;DBGrid.&lt;/b&gt; Как&amp;nbsp; создавать и сохранять записи в таблице &lt;b&gt;MS Excel из Delphi.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
И так, приступим&amp;hellip;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpa...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;
&lt;p&gt;&lt;img align=&quot;left&quot; alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В предыдущем посте я рассказывал,&amp;nbsp; как работать с &lt;b&gt;MS Excel&lt;/b&gt; из &lt;b&gt;Delphi&lt;/b&gt; через &lt;b&gt;ComObj&lt;/b&gt; (&lt;b&gt;Com&lt;/b&gt; &lt;b&gt;объект&lt;/b&gt;).&lt;br /&gt;
В этой статье я расскажу, как подключить таблицу&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt; через компонент &lt;b&gt;ADOConnection&lt;/b&gt; в &lt;b&gt;Delphi&lt;/b&gt;. Из данной статьи вы сможете узнать о способах данного подключения. Как загрузить данные из таблицы&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt; в компонент &lt;b&gt;DBGrid.&lt;/b&gt; Как&amp;nbsp; создавать и сохранять записи в таблице &lt;b&gt;MS Excel из Delphi.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
И так, приступим&amp;hellip;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpadding=&quot;10&quot;&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;script type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot; src=&quot;http://z850.takru.com/in.php?id=858935&quot;&gt;&lt;/script&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Запустим &lt;b&gt;Delphi&lt;/b&gt; и создадим новое приложение &lt;b&gt;File -&amp;gt; New-&amp;gt; VCL Forms Application &amp;ndash; Delphi.&lt;/b&gt;&lt;br /&gt;
Разместим на форме следующие компоненты:&lt;br /&gt;
1. Компонент&amp;nbsp; &lt;b&gt;TADOConnection&lt;/b&gt; из вкладки &lt;b&gt;dbGo (ADO)&lt;/b&gt;;&lt;br /&gt;
2. Компонент&amp;nbsp; &lt;b&gt;TADOQuery&lt;/b&gt; из вкладки &lt;b&gt;dbGo (ADO)&lt;/b&gt;;&lt;br /&gt;
3. Компонент&amp;nbsp; &lt;b&gt;TDataSource&lt;/b&gt; из вкладки &lt;b&gt;Data Access;&lt;/b&gt;&lt;br /&gt;
4. Компонент&amp;nbsp; &lt;b&gt;TDBGrid&amp;nbsp;&lt;/b&gt; из вкладки &lt;b&gt;Data Controls;&lt;/b&gt;&lt;br /&gt;
5. И два компонента &lt;b&gt;TButton &lt;/b&gt;из вкладки &lt;b&gt;Standard&lt;/b&gt;.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/1.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Далее создадим таблицу&amp;nbsp; &lt;b&gt;MS Excel&lt;/b&gt; со следующими полями:&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/2.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;и сохраним ее как &lt;b&gt;1.xlsx&lt;/b&gt; для (&lt;b&gt;MS Excel 2007&lt;/b&gt;) или &lt;b&gt;1.xls&lt;/b&gt; для (&lt;b&gt;MS Excel 2003&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
Затем настроим компоненты&amp;hellip;&lt;br /&gt;
&lt;br /&gt;
Начнем с&amp;nbsp; компонента подключения к базе &lt;b&gt;ADOConnection1&lt;/b&gt;. Мы будем подключаться к таблице &lt;b&gt;MS Excel.&lt;/b&gt;&lt;br /&gt;
В инспекторе объектов для компонента &lt;b&gt;ADOConnection1&lt;/b&gt; выбираем свойство &lt;b&gt;ConnectionString&lt;/b&gt; и вписываем туда следующую строку &lt;b&gt;для MS Excel 2007&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =1.xlsx; Extended Properties =&quot;Excel 12.0 Xml;HDR=YES&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Файл 1.xlsx должен находиться в папке с приложением.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
При указании полного пути до файла:&lt;br /&gt;
&lt;br /&gt;
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:&amp;#92;myFolder&amp;#92;myExcel2007file.xlsx; Extended Properties =&quot;Excel 12.0 Xml;HDR=YES&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Если у вас&amp;nbsp; MS Excel 2003 то вписываем&amp;nbsp; следующую строку:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=1.xls;Extended Properties=Excel 8.0;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Файл 1.xls должен находиться в папке с приложением.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Также можно подключиться через мастера подключения, для этого нажимаем:&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/3.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/4.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/5.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/6.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;выбираем &amp;laquo;&lt;b&gt;Использовать строку подключения&lt;/b&gt;&amp;raquo; -&amp;gt; &lt;b&gt;Сборка&amp;hellip;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/7.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Выбираем &amp;laquo;&lt;b&gt;Источник данных компьютера&lt;/b&gt;&amp;raquo; -- &amp;gt; &amp;laquo;&lt;b&gt;Файлы Excel&lt;/b&gt;&amp;raquo; -- &amp;gt; и &lt;b&gt;нажимаем на пункте дважды левой кнопкой мыши&lt;/b&gt;.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/8.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;&lt;b&gt;Находим наш файл и жмем ОК.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;font color=&quot;#ff0000&quot;&gt;Внимание!!!&lt;/font&gt;&lt;/b&gt; К сожалению такое подключение возможно только для файлов &lt;b&gt;Excel&lt;/b&gt; сохраненных в формате &lt;b&gt;Excel 97-2003&lt;/b&gt; &lt;b&gt;(*.xls)&lt;/b&gt;, поэтому в моем случае выдаст ошибку.&lt;br /&gt;
&lt;br /&gt;
После установки подключения убираем галочка со свойства &lt;b&gt;LoginPromt,&lt;/b&gt; чтоб не запрашивал пароль и переходим к настройке компонента &lt;b&gt;ADOQuery1&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Свойство &lt;b&gt;Connection&lt;/b&gt; устанавливаем &lt;b&gt;ADOConnection1&lt;/b&gt;;&lt;br /&gt;
Свойство &lt;b&gt;SQL --&amp;gt; TString --&amp;gt; пишем запрос&amp;nbsp; SELECT * FROM [Лист1$] ;&lt;/b&gt;&lt;br /&gt;
Свойство &lt;b&gt;Active--&amp;gt; True.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Переходим к компоненту &lt;b&gt;DataSource1 &lt;/b&gt;и устанавливаем ему свойство &lt;b&gt;DataSet -- &amp;gt; ADOQuery1&lt;/b&gt;.&lt;br /&gt;
Переходим к компоненту &lt;b&gt;DBGrid1&lt;/b&gt; и устанавливаем ему свойство &lt;b&gt;DataSource--&amp;gt; DataSource1.&lt;/b&gt;&lt;br /&gt;
После данных настроек, если вы все сделали правильно в &lt;b&gt;DBGrid&lt;/b&gt; должны отобразиться поля вашей таблицы. Чтобы изменить размер отображаемых полей в &lt;b&gt;Structure&lt;/b&gt; выбираем:&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/9.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;И для всех добавленных полей изменяем свойство &lt;b&gt;DisplayWidth --&amp;gt;20&lt;/b&gt;.&lt;br /&gt;
Должно получиться следующее:&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;img alt=&quot;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel2/10.jpg&quot; /&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;&lt;b&gt;&lt;font color=&quot;#ff0000&quot;&gt;Внимание!!!&lt;/font&gt;&lt;/b&gt; Перед запуском на выполнение, необходимо убрать галочки у компонента &lt;b&gt;ADOConnection1 -- &amp;gt;Connected&lt;/b&gt;&amp;nbsp; и у компонента &lt;b&gt;ADOQuery --&amp;gt; Active&lt;/b&gt; иначе будут сыпаться &lt;b&gt;ошибки, типа не могу подключиться, так как подключение уже используется.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Дело движется к концу. Осталось только написать обработчики событий для кнопок (назовем их &lt;b&gt;&quot;Новая запись&quot;&lt;/b&gt; и &lt;b&gt;&quot;Сохранить&quot;&lt;/b&gt; соответственно).&amp;nbsp;&lt;b&gt; Начнем&amp;hellip;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Для события &lt;b&gt;OnClick кнопки &amp;laquo;Сохранить&amp;raquo;&lt;/b&gt; пишем следующий код:&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
ADOQuery1.Edit;&lt;br /&gt;
ADOQuery1.Post;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Для события &lt;b&gt;OnClick кнопки &amp;laquo;Новая запись&amp;raquo;&lt;/b&gt; пишем следующий код:&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
ADOQuery1.Append;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
И для &lt;b&gt;события OnCreate &lt;/b&gt;формы пишем:&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.FormCreate(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
ADOConnection1.Connected:=true;&lt;br /&gt;
ADOQuery1.Active:=False;&lt;br /&gt;
ADOQuery1.SQL.Clear;&lt;br /&gt;
ADOQuery1.SQL.Add(&apos;SELECT * FROM [Лист1$]&apos;);&lt;br /&gt;
ADOQuery1.Active:=True;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
Сохраняем, запускаем на исполнение и видим, что с&amp;nbsp; таблицами &lt;b&gt;MS Excel &lt;/b&gt;можно работать также как и с файлами базы данных, &lt;b&gt;но есть одно но, данный провайдер подключения не поддерживает удаление&amp;nbsp; записей&lt;/b&gt;.&amp;nbsp;&lt;/div&gt;

&lt;div align=&quot;left&quot;&gt;При написании статьи использовался материал с сайта&amp;nbsp;&lt;a href=&quot;http://devdelphi.ru/?p=63&quot;&gt;http://devdelphi.ru/?p=63&lt;/a&gt;&amp;nbsp;, за что автору огромное спасибо!!!&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;a class=&quot;mrc__plugin_uber_like_button&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot; href=&quot;http://connect.mail.ru/share&quot; target=&quot;_blank&quot;&gt;Нравится&lt;/a&gt; &lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;br /&gt;
Спасибо за внимание.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Скачать исходники к статье можно &lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/rabota_excel2/excel.zip&quot; title=&quot;Исходники к статье&quot;&gt;здесь&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Другие статьи по работе с MS Excel:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;2011-09-30-8&quot;&gt;Работа с EXCEL из Delphi&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;2011-10-02-10&quot;&gt;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-10-02-9</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-10-02-9</guid>
			<pubDate>Sun, 02 Oct 2011 09:11:02 GMT</pubDate>
		</item>
		<item>
			<title>Работа с EXCEL из Delphi</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Работа с EXCEL из Delphi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;img align=&quot;left&quot; alt=&quot;Работа с EXCEL из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В этой статье я познакомлю вас как работать с &lt;b&gt;MS Excel из Delphi&lt;/b&gt;. Данная статья может быть полезна людям, которые хотят научиться создавать различные &lt;b&gt;отчеты&amp;nbsp; в Excel&lt;/b&gt; из программ написанных на &lt;b&gt;Delphi&lt;/b&gt;. Статья содержит справочные данные необходимые для работы с &lt;b&gt;MS Excel&lt;/b&gt;. Здесь вы найдете информацию о том как:&lt;br /&gt;
&lt;br /&gt;
- Подключить и правильно отключить интерфейс Excel;&lt;br /&gt;
- Как изменить размер, цвет и тип шрифта;&lt;br /&gt;
- Как выделить, объединить, заполнить и размножить&amp;nbsp; диапазон ячеек;&lt;br /&gt;
- Как повернуть и отцентрировать текст;&lt;br /&gt;
- Как нарисовать границы ячеек;&lt;br /&gt;
- Как ввести формулу в ячейку и многое другое...&lt;br /&gt;
&lt;br /&gt;
И так, начнем...&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;div...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Работа с EXCEL из Delphi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;img align=&quot;left&quot; alt=&quot;Работа с EXCEL из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В этой статье я познакомлю вас как работать с &lt;b&gt;MS Excel из Delphi&lt;/b&gt;. Данная статья может быть полезна людям, которые хотят научиться создавать различные &lt;b&gt;отчеты&amp;nbsp; в Excel&lt;/b&gt; из программ написанных на &lt;b&gt;Delphi&lt;/b&gt;. Статья содержит справочные данные необходимые для работы с &lt;b&gt;MS Excel&lt;/b&gt;. Здесь вы найдете информацию о том как:&lt;br /&gt;
&lt;br /&gt;
- Подключить и правильно отключить интерфейс Excel;&lt;br /&gt;
- Как изменить размер, цвет и тип шрифта;&lt;br /&gt;
- Как выделить, объединить, заполнить и размножить&amp;nbsp; диапазон ячеек;&lt;br /&gt;
- Как повернуть и отцентрировать текст;&lt;br /&gt;
- Как нарисовать границы ячеек;&lt;br /&gt;
- Как ввести формулу в ячейку и многое другое...&lt;br /&gt;
&lt;br /&gt;
И так, начнем...&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpadding=&quot;10&quot;&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;script type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot; src=&quot;http://z850.takru.com/in.php?id=858935&quot;&gt;&lt;/script&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Работать будем через модуль &lt;b&gt;ComObj,&lt;/b&gt; для этого в&lt;b&gt; uses&lt;/b&gt; необходимо добавить модуль&amp;nbsp; &lt;b&gt;ComObj&lt;/b&gt; и&amp;nbsp; модуль &lt;b&gt;Excel_TLB&lt;/b&gt; (для &lt;b&gt;MS Excel 2007&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Uses &amp;hellip;&amp;hellip;, ComObj,&amp;nbsp; Excel_TLB;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Модуль &lt;b&gt;Excel_TLB&lt;/b&gt; содержит необходимые &lt;b&gt;константы&lt;/b&gt;&amp;nbsp; для работы с&lt;b&gt; Excel&lt;/b&gt;, его можно не подключать, но тогда придется в ручную прописывать значения всех используемых констант из этого модуля. Значения констант можно найти внутри модуля или в интернете, но для разных версий &lt;b&gt;MS Excel&lt;/b&gt; они разные.&lt;br /&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;b&gt;Внимание!!!&lt;/b&gt;&lt;/span&gt;&amp;nbsp; Модуль&lt;b&gt; Excel_TLB&lt;/b&gt; в других версиях&lt;b&gt; MS Excel&lt;/b&gt; может называться по другому. Перед подключением модуля &lt;b&gt;Excel_TLB,&lt;/b&gt; необходимо импортировать библиотеку &lt;b&gt;Excel&lt;/b&gt;. Для этого выберите &lt;b&gt;Component-&amp;gt;Import Component-&amp;gt;Import a Type Library-&amp;gt;&lt;/b&gt; находим&lt;b&gt; MS Excel&lt;/b&gt; и следуем инструкциям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В разделе описания переменных мы должны описать переменную типа &lt;b&gt;Variant&lt;/b&gt; или &lt;b&gt;OleVariant&lt;/b&gt; для подключения интерфейса &lt;b&gt;Excel. &lt;/b&gt;Я описал переменную &lt;b&gt;excel&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&lt;br /&gt;
Form1: TForm1;&lt;br /&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;b&gt;excel&lt;/b&gt;&lt;/span&gt;: &lt;b&gt;variant;&lt;/b&gt; // Переменная в которой создаётся объект &lt;b&gt;EXCEL&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&amp;nbsp;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;Создание документа&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;b&gt;Внимание!!!&lt;/b&gt;&lt;/span&gt; Всегда когда создаете объект интерфейса, заключайте&amp;nbsp; процедуру создания в модуль обработки ошибок:&lt;br /&gt;
&lt;b&gt;try&lt;/b&gt;&lt;br /&gt;
создаем интерфейс;&lt;br /&gt;
формируем отчет;&lt;br /&gt;
освобождаем интерфейс;&lt;br /&gt;
&lt;b&gt;Except&lt;/b&gt;&lt;br /&gt;
обрабатываем ошибки;&lt;br /&gt;
освобождаем интерфейс;&lt;br /&gt;
&lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Далее идет краткий справочник по основным функциям работы с &lt;b&gt;EXCEL&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;try&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;// создаем обьект EXCEL&lt;/b&gt;&lt;br /&gt;
excel := CreateOleObject(&apos;Excel.Application&apos;);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Чтоб не задавал вопрос о сохранении документа&lt;/b&gt;&lt;br /&gt;
excel.DisplayAlerts := false;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// создаем новый документ&lt;/b&gt; &lt;b&gt;рабочую книгу&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks.Add;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// или загружаем его из директории с программой&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks.Open(GetCurrentDir() + &apos;&amp;#92;отчет.xls&apos;);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;{ GetCurrentDir()- возвращает путь к директории с программой}&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Делаем его видимым&lt;/b&gt; данную функцию после отладки и тестирования лучше использовать в конце, после сформирования отчета (это ускоряет процесс вывода данных в отчет)&lt;br /&gt;
excel.Visible := true;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//задаем тип формул в формате R1C1&lt;/b&gt;&lt;br /&gt;
excel.Application.ReferenceStyle := xlR1C1;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// задаем тип формул в формате A1&lt;/b&gt;&lt;br /&gt;
excel.Application.ReferenceStyle := xlA1;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Задаем название первому и второму листу&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Name := &apos;Отчет1&apos;;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[2].Name := &apos;Отчет2&apos;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//задаем формат числа для первой и четвертой колонки формат числа&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Columns[1].NumberFormat := &apos;0,00&apos;;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Columns[4].NumberFormat := &apos;0,0&apos;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// задаем ширину первой и второй колонки&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 10;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 20;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// задаем начертание, цвет, размер и тип шрифта для первого ряда&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold := True; &lt;b&gt;//жирный&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color := clRed;&amp;nbsp; &lt;b&gt;// цвет красный&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 12;&lt;b&gt;&amp;nbsp; //размер 12&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name := &apos;Times New Roman&apos;;&lt;b&gt;&amp;nbsp; //шрифт&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//присваиваем ячейке 1,4 и 2,4 значения (1 - ряд, 4 - колонка)&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Cells[1, 4] := &apos;А так можно внести значение в ячейку&apos;;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Cells[2, 4] := &apos;А так можно внести значение в ячейку&apos;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//ввод в ячейку &apos;A12&apos; формулы &apos;=b5+c4&apos;&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A12&apos;].Formula:=&apos;=b5+c4&apos;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Выравнивам первый ряд по центру по вертикали&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].VerticalAlignment := xlCenter;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Выравнивам первый ряд по центру по горизонтали&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[1].HorizontalAlignment := xlCenter;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Выравнивам в ячейке по левому краю&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Cells[3, 2].HorizontalAlignment := xlLeft;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Выравнивам в ячейке по правому краю&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Cells[3, 4].HorizontalAlignment := xlRight;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Обьединяем ячейки &apos;A1:A8&apos;&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A1:A8&apos;].Merge;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Поворачиваем слова под углом 90 градусов для второго ряда&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Rows[2].Orientation := 90;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;// Поворачиваем слова под углом 45 градусов для диапазона ячеек &apos;B3:D3&apos;&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;B3:D3&apos;].Orientation := 45;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона левая&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous; //&lt;b&gt; стиль линии сплошная&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlEdgeLeft].Weight := xlMedium;//&lt;b&gt; толщина линии&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона верхняя&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeTop].Weight := xlMedium;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона нижняя&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlEdgeBottom].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeBottom].Weight := xlMedium;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона правая&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlEdgeRight].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeRight].Weight := xlMedium;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона вертикальные внутрениие&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlInsideVertical].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlInsideVertical].Weight := xlMedium;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//рисуем границы&amp;nbsp; выделенного диапазона горизонтальные внутрениие&lt;/b&gt;&lt;br /&gt;
excel.Selection.Borders[xlInsideHorizontal].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlInsideHorizontal].Weight := xlMedium;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//автозаполнение выделенного диапазона&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;//для примера заполним область ячеек &apos;A10:C10&apos; словом &apos;привет&apos;&lt;br /&gt;
//и размножим его вниз еще на пять ячеек &apos;A10:C15&apos;&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A10:C10&apos;].Value:=&apos;привет&apos;;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//выделяем диапазон ячеек &apos;A10:C10&apos;&lt;/b&gt;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A10:C10&apos;].Select;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//автозаполняем (копируем) выделенным диапазоном область ячеек &apos;A10:C15&apos;&lt;/b&gt;&lt;br /&gt;
excel.selection.autofill(excel.WorkBooks[1].WorkSheets[1].Range[&apos;A10:C15&apos;],xlFillDefault);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//отключаем предупреждения, чтобы не задавал вопросов о сохранении и других&lt;/b&gt;&lt;br /&gt;
excel.DisplayAlerts := False;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;//сохраняем документ в формате Excel 97-2003&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;excel.ActiveWorkBook.Saveas(GetCurrentDir() + &apos;&amp;#92;отчет.xls&apos;,xlExcel8);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;//сохраняем документ в текущем формате Excel 2007&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;excel.ActiveWorkBook.Saveas(GetCurrentDir() + &apos;&amp;#92;отчет.xlsx&apos;);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//закроем все книги&lt;/b&gt;&lt;br /&gt;
excel.Workbooks.Close;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//закрываем Excel&lt;/b&gt;&lt;br /&gt;
excel.Application.quit;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//освобождаем интерфейсы&lt;/b&gt;&lt;br /&gt;
excel := Unassigned;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Except&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//обрабатываем ошибки&lt;/b&gt;&lt;br /&gt;
showmessage(&apos;Внимание! Произошла ошибка при создании MS Excel приложения&apos;);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//закроем все книги&lt;/b&gt;&lt;br /&gt;
excel.Workbooks.Close;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//закрываем Excel&lt;/b&gt;&lt;br /&gt;
excel.Application.quit;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//освобождаем интерфейсы&lt;/b&gt;&lt;br /&gt;
excel := Unassigned;&lt;br /&gt;
&lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При работе с &lt;b&gt;листом Excel &lt;/b&gt;мы можем использовать следующие варианты:&lt;br /&gt;
- работать с областью Range[&apos;B3:D3&apos;];&lt;br /&gt;
- работать с ячейкой Cells[2, 4] где 2 - ряд, 4 - колонка;&lt;br /&gt;
- работать с рядами Rows[1] или с диапазоном рядов Rows[&apos;1:5&apos;];&lt;br /&gt;
- работать с колонками Columns[1] или диапазоном колонок Columns[&apos;A:I&apos;];&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Range[&apos;A1&apos;] и Cells[1, 1] обозначают одно и тоже.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
После сформирования документа или возникновении ошибки вы должны правильно освободить интерфейсы.&lt;br /&gt;
Иначе при закрытии &lt;b&gt;Excel &lt;/b&gt;он скрывается с экрана, но если открыть диспетчер задач он продолжает там висеть и если данный процесс не завершить , то при каждом новом запуске их будет накапливаться больше и больше, пока компьютер не начнет виснуть. Поэтому обязательно необходимо освобождать все интерфейсы с вязанные с &lt;b&gt;Excel&lt;/b&gt; с его книгами и листами.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Например так:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;//закроем все книги&lt;/b&gt;&lt;br /&gt;
excel.Workbooks.Close;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//закрываем Excel&lt;/b&gt;&lt;br /&gt;
excel.Application.quit;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//освобождаем интерфейсы&lt;/b&gt;&lt;br /&gt;
sheet:=Unassigned; //интерфейс листа если он был создан&lt;br /&gt;
WorkBook := Unassigned;//интерфейс рабочей книги если он был создан&lt;br /&gt;
excel := Unassigned;//интерфейс самого предложения если он был создан&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;b&gt;Ниже привожу пример вывода в&lt;/b&gt;&lt;/span&gt; &lt;b&gt;Excel из Delphi &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;таблицы умножения с подробными комментариями.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работа с EXCEL из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel/2.jpg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Работа с EXCEL из Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/rabota_excel/1.jpg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
unit Unit1;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;
&amp;nbsp; Dialogs, comobj, StdCtrls, Excel_TLB;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
&amp;nbsp; TForm1 = class(TForm)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button1: TButton;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Button1Click(Sender: TObject);&lt;br /&gt;
&amp;nbsp; private&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br /&gt;
&amp;nbsp; public&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br /&gt;
&amp;nbsp; end;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
&amp;nbsp; Form1: TForm1;&lt;br /&gt;
&amp;nbsp; excel: variant; // Переменная в которой создаётся объект EXCEL&lt;br /&gt;
&amp;nbsp; MyData: variant; // Переменная в которой формируется таблица умножения&lt;br /&gt;
&amp;nbsp; i,j:integer;&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
{$R *.dfm}&lt;br /&gt;
&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
begin&lt;br /&gt;
try&lt;br /&gt;
// Обьект EXCEL&lt;br /&gt;
excel := CreateOleObject(&apos;Excel.Application&apos;);&lt;br /&gt;
// Чтоб не задавал вопрос о сохранении документа&lt;br /&gt;
excel.DisplayAlerts := false;&lt;br /&gt;
// новый документ&lt;br /&gt;
excel.WorkBooks.Add;&lt;br /&gt;
&lt;br /&gt;
//объявляем вариантный массив&lt;br /&gt;
MyData := VarArrayCreate([1,9,1,9],varVariant);&lt;br /&gt;
for I := 1 to 9 do&lt;br /&gt;
for J := 1 to 9 do&lt;br /&gt;
&amp;nbsp; MyData[i,j]:=i*j;&lt;br /&gt;
&lt;br /&gt;
// Обьединяем ячейки &apos;A1:I1&apos;&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A1:I1&apos;].Merge;&lt;br /&gt;
//Пишем заголовок&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A1&apos;].Value:=&apos;Таблица умножения&apos;;&lt;br /&gt;
// Выравнивам заголовок по центру&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A1&apos;].HorizontalAlignment := xlCenter;&lt;br /&gt;
// задаем ширину&amp;nbsp; колонок с A по I&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Columns[&apos;A:I&apos;].ColumnWidth := 3;&lt;br /&gt;
&lt;br /&gt;
//выделяем область таблицы умножения [&apos;A2:I10&apos;] и рисуем границы&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A2:I10&apos;].select;&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона левая&lt;br /&gt;
excel.Selection.Borders[xlEdgeLeft].LineStyle := xlContinuous; // стиль линии сплошная&lt;br /&gt;
excel.Selection.Borders[xlEdgeLeft].Weight := xlThin;// толщина линии&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона верхняя&lt;br /&gt;
excel.Selection.Borders[xlEdgeTop].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeTop].Weight := xlThin;&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона нижняя&lt;br /&gt;
excel.Selection.Borders[xlEdgeBottom].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeBottom].Weight := xlThin;&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона правая&lt;br /&gt;
excel.Selection.Borders[xlEdgeRight].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlEdgeRight].Weight := xlThin;&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона вертикальные внутрениие&lt;br /&gt;
excel.Selection.Borders[xlInsideVertical].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlInsideVertical].Weight := xlThin;&lt;br /&gt;
//рисуем границы&amp;nbsp; выделенного диапазона горизонтальные внутрениие&lt;br /&gt;
excel.Selection.Borders[xlInsideHorizontal].LineStyle := xlContinuous;&lt;br /&gt;
excel.Selection.Borders[xlInsideHorizontal].Weight := xlThin;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//присваиваем диапазону [&apos;A2:I10&apos;] значения вариантного массива&amp;nbsp; MyData это значительно ускоряет работу, нежели вывод по //ячеечно&lt;br /&gt;
&lt;br /&gt;
excel.WorkBooks[1].WorkSheets[1].Range[&apos;A2:I10&apos;].Value:=MyData;&lt;br /&gt;
&lt;br /&gt;
// Делаем его видимым&lt;br /&gt;
excel.Visible := true;&lt;br /&gt;
//освобождаем интерфейсы&lt;br /&gt;
MyData:= Unassigned;&lt;br /&gt;
excel := Unassigned;&lt;br /&gt;
Except&lt;br /&gt;
showmessage(&apos;Внимание! Произошла ошибка при создании MS Excel приложения&apos;);&lt;br /&gt;
//закрываем Excel&lt;br /&gt;
excel.Application.quit;&lt;br /&gt;
//освобождаем интерфейсы&lt;br /&gt;
MyData:= Unassigned;&lt;br /&gt;
excel := Unassigned;&lt;br /&gt;
end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
При написании статьи использовался материал с сайта&amp;nbsp;&lt;a href=&quot;http://vlad2000.h1.ru/Frames/Statyi/page_14.html&quot;&gt;http://vlad2000.h1.ru/Frames/Statyi/page_14.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div&gt;&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;a class=&quot;mrc__plugin_uber_like_button&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;counter&apos; : &apos;true&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;}&quot; href=&quot;http://connect.mail.ru/share&quot; target=&quot;_blank&quot;&gt;Нравится&lt;/a&gt; &lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Скачать пример к уроку можно &lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/rabota_excel/excel.zip&quot; title=&quot;Исходники к уроку&quot;&gt;здесь&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Другие статьи по работе с MS Excel:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;2011-10-02-9&quot;&gt;Учимся работать с MS Excel через подключение ADOConnection в Delphi.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;2011-10-02-10&quot;&gt;Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-09-30-8</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-09-30-8</guid>
			<pubDate>Fri, 30 Sep 2011 18:25:31 GMT</pubDate>
		</item>
		<item>
			<title>Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Создание SQL запросов к базе данных созданной в MS Access 2003 &amp;ndash; 2007 из Delphi с помощь компонента ADOQuery.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;img align=&quot;left&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Эта статья будет посвящена новичкам, которые хотят научиться создавать базы данных в &lt;b&gt;Delphi&lt;/b&gt;, но не знают &lt;b&gt;языка SQL &lt;/b&gt;запросов. Частично, можно выйти из положения используя компоненты &lt;b&gt;ADOTable и фильтрацию&lt;/b&gt;, но не все задачи можно решить с помощью них. Как быть? Я предлагаю составлять запросы с помощью &lt;b&gt;конструктора SQL запросов в&amp;nbsp; MS Access 2003 &amp;ndash; 2007&lt;/b&gt;, и переносить их в &lt;b&gt;компонент ADOQuery &lt;/b&gt;или любой другой, позволяющий работать &lt;b&gt;SQL&lt;/b&gt; запросами. Понятно, что если вы хотите профессионально заняться программированием баз данных, то без изучения языка запросов &lt;b&gt;SQL&lt;/b&gt; вам не обойтись, но на первых ...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Создание SQL запросов к базе данных созданной в MS Access 2003 &amp;ndash; 2007 из Delphi с помощь компонента ADOQuery.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;img align=&quot;left&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/i.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Эта статья будет посвящена новичкам, которые хотят научиться создавать базы данных в &lt;b&gt;Delphi&lt;/b&gt;, но не знают &lt;b&gt;языка SQL &lt;/b&gt;запросов. Частично, можно выйти из положения используя компоненты &lt;b&gt;ADOTable и фильтрацию&lt;/b&gt;, но не все задачи можно решить с помощью них. Как быть? Я предлагаю составлять запросы с помощью &lt;b&gt;конструктора SQL запросов в&amp;nbsp; MS Access 2003 &amp;ndash; 2007&lt;/b&gt;, и переносить их в &lt;b&gt;компонент ADOQuery &lt;/b&gt;или любой другой, позволяющий работать &lt;b&gt;SQL&lt;/b&gt; запросами. Понятно, что если вы хотите профессионально заняться программированием баз данных, то без изучения языка запросов &lt;b&gt;SQL&lt;/b&gt; вам не обойтись, но на первых порах &lt;b&gt;конструктор SQL запросов в&amp;nbsp; MS Access 2003 &amp;ndash; 2007&lt;/b&gt; может послужить вам хорошим другом.&lt;br /&gt;
Сейчас я попытаюсь рассказать, как работать с этим конструктором. Предполагается, что вы уже умеете создавать саму базу данных в &lt;b&gt;MS Access 2003 &amp;ndash; 2007&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Итак, приступим&amp;hellip;&lt;br /&gt;
&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpadding=&quot;10&quot;&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;script type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot; src=&quot;http://z850.takru.com/in.php?id=858935&quot;&gt;&lt;/script&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть у нас имеется некая база данных &lt;b&gt;bd.mdb&lt;/b&gt; имеющая три таблицы &lt;b&gt;products, ed_izmer, storage&lt;/b&gt;. &lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/zapros_k_baze/bd.zip&quot; title=&quot;База для урока&quot;&gt;Скачать базу&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/1.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/2.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/3.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;И мне необходимо составить запрос к базе на выборку всех продуктов из таблицы &lt;b&gt;storage&lt;/b&gt; &lt;b&gt;с подстановкой наименования продукта, единицы измерения, количества, цены и суммы&lt;/b&gt;.&lt;br /&gt;
Открываем базу&amp;nbsp; в &lt;b&gt;MS Access 2003 &amp;ndash; 2007&lt;/b&gt;, переходим на вкладку &lt;b&gt;Создание-&amp;gt;Конструктор запросов&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/4.jpg&quot; /&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;и видим следующее окно.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/5.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;В этом окне необходимо выбрать таблицы, которые будут использоваться в запросе.&amp;nbsp; В нашем случае добавляем все три таблицы и закрываем окно.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/6.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Теперь создаем связи между таблицами, делается это перетаскивание соответствующего пункта из одной таблицы на соответствующий пункт другой таблицы. В нашем случае мы перетаскиваем&amp;nbsp; &lt;b&gt;поле id из ed_izmer на поле id_ed_izmer таблицы storage&lt;/b&gt;. Аналогично &lt;b&gt;поле id из products на поле id_product таблицы storage.&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/8.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Далее жмем правую кнопку мыши на полученной связи, и выбираем пункт &lt;b&gt;&amp;laquo;Параметры объединения&amp;raquo;.&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/9.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
Устанавливаем нужный вариант объединения и жмем&lt;b&gt; OK&lt;/b&gt;. Делаем аналогичную операцию с другой связью.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/7.jpg&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&amp;nbsp;

&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/10.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Теперь переходим к нижней части конструктора запросов&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/11.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;И заполняем, как показано на рисунке&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/12.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;В первый столбец вводим &lt;b&gt;имя таблицы -&amp;gt; products, поле product_name.&lt;/b&gt;&lt;br /&gt;
Во второй &lt;b&gt;имя таблицы -&amp;gt; ed_izmer, поле ed_name.&lt;/b&gt;&lt;br /&gt;
В третий &lt;b&gt;имя таблицы -&amp;gt; storage, поле quantity.&lt;/b&gt;&lt;br /&gt;
В четвертый &lt;b&gt;имя таблицы -&amp;gt; storage, поле price.&lt;/b&gt;&lt;br /&gt;
В пятый столбец вводим формулу для вычисления суммы.&lt;br /&gt;
&lt;b&gt;Формулы вводятся следующим образом:&lt;/b&gt; в начале идет &lt;b&gt;имя поля (придумываем сами), затем двоеточие, а затем формула&lt;/b&gt; в виде &lt;b&gt;[имя таблицы1].[имя поля]знак операции[имя таблицы2].[имя поля].&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
В нашем случае вводим следующую формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;сумма: [storage].[quantity]*[storage].[price]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
на этом запрос готов жмем на крестик и сохраняем запрос.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/13.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Жмем на созданном запросе и проверяем работоспособность.&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/14.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Если все работает, переходим в&lt;b&gt; режим SQL&lt;/b&gt;, для этого нажимаем правой кнопкой мыши на вкладке &lt;b&gt;Запрос1&lt;/b&gt; и выбираем &lt;b&gt;Режим SQL.&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/15.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/zapros_k_baze/16.jpg&quot; /&gt;&lt;br /&gt;
&amp;nbsp;
&lt;div align=&quot;left&quot;&gt;Копируем полученный запрос и вставляем его в поле &lt;b&gt;SQL -&amp;gt; TStrings&lt;/b&gt; компонента&lt;b&gt; ADOQuery в Delphi&lt;/b&gt;. Или используем программно:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ADOQuery.Active:=false;&lt;br /&gt;
ADOQuery.SQL.Clear;&lt;br /&gt;
ADOQuery.SQL.Add(&apos;SELECT products.product_name, ed_izmer.ed_name, storage.quantity, storage.price, [storage].[quantity]*[storage].[price] AS сумма&lt;br /&gt;
FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product) ON ed_izmer.id=storage.id_ed_izmer;&apos;);&lt;br /&gt;
ADOQuery.Active:=True;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Если запрос очень длинный то его можно разбить, например, так:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ADOQuery.SQL.Add(&apos;SELECT products.product_name,&apos;+&lt;br /&gt;
&apos;&amp;nbsp; ed_izmer.ed_name, storage.quantity, storage.price,&apos;+&lt;br /&gt;
&apos; [storage].[quantity]*[storage].[price] AS сумма&apos;+&lt;br /&gt;
&apos; FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product)&apos;+&lt;br /&gt;
&apos; ON ed_izmer.id=storage.id_ed_izmer;&apos;);&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Либо использовать &lt;b&gt;ADOQuery.SQL.Add(&apos;части запроса&apos;)&lt;/b&gt; несколько раз.&lt;br /&gt;
&lt;br /&gt;
Можно делать и обратное преобразование запроса &lt;b&gt;SQL&lt;/b&gt;. Берем готовый &lt;b&gt;SQL&lt;/b&gt; запрос, копируем его в &lt;b&gt;конструктор запросов MS Access&lt;/b&gt;&amp;nbsp; в&lt;b&gt; режиме SQL&lt;/b&gt;, затем переключаемся в &lt;b&gt;режим конструктора&lt;/b&gt; и изучаем какие таблицы, поля, связи, выражения входят в запрос. Если надо, то вносим изменения.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ну и на последок немножко о синтаксисе запроса:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Слово &lt;b&gt;select&lt;/b&gt; в запросе означает создание выборки. Эта команда имеет вот такой синтаксис:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;select [список полей] from [список таблиц и их соединения]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Поля в списке полей перечисляются через запятую.&lt;br /&gt;
Синтаксис описания поля такой:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[Имя таблицы].[Имя поля] AS [Имя поля в выборке]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
После последнего поля из списка запятая не ставиться.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&quot;mrc__plugin_uber_like_button&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot; href=&quot;http://connect.mail.ru/share&quot; target=&quot;_blank&quot;&gt;Нравится&lt;/a&gt; &lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Спасибо за внимание.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Скачать материалы к уроку можно &lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/zapros_k_baze/bd.zip&quot; title=&quot;База к уроку&quot;&gt;здесь.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Автор xaramamburu. Сайт автора basicsprog.ucoz.ru.&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-09-04-7</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-09-04-7</guid>
			<pubDate>Sun, 04 Sep 2011 17:54:29 GMT</pubDate>
		</item>
		<item>
			<title>Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-weight: bold;&quot;&gt;Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;img ilo-full-src=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/2/0.jpg&quot; style=&quot;margin-bottom: 1px; margin-right: 10px;&quot; alt=&quot;Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/anim_delphi/2/0.jpg&quot; align=&quot;left&quot;&gt;Используемые компоненты:&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TImage&lt;/span&gt; (Графический холст)&amp;nbsp; находится на вкладке &lt;span style=&quot;font-weight: bold;&quot;&gt;Additional&lt;/span&gt;.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TTimer&lt;/span&gt;&amp;nbsp; (Таймер) находится на вкладке System.&lt;br&gt;&amp;nbsp;&lt;br&gt;Сегодня я расскажу как создать несложную анимацию, по дороге будут ездить на встречу друг другу автомобиль и мотоцикл.&lt;br&gt;&amp;nbsp; &lt;br&gt;1) И так находим изображение дороги или рисуем в программе Paint сами. Задаем размер картинки в пикселях&amp;nbsp; 640*480. Для этого ...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 14pt; font-weight: bold;&quot;&gt;Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;img ilo-full-src=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/2/0.jpg&quot; style=&quot;margin-bottom: 1px; margin-right: 10px;&quot; alt=&quot;Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/anim_delphi/2/0.jpg&quot; align=&quot;left&quot;&gt;Используемые компоненты:&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TImage&lt;/span&gt; (Графический холст)&amp;nbsp; находится на вкладке &lt;span style=&quot;font-weight: bold;&quot;&gt;Additional&lt;/span&gt;.&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TTimer&lt;/span&gt;&amp;nbsp; (Таймер) находится на вкладке System.&lt;br&gt;&amp;nbsp;&lt;br&gt;Сегодня я расскажу как создать несложную анимацию, по дороге будут ездить на встречу друг другу автомобиль и мотоцикл.&lt;br&gt;&amp;nbsp; &lt;br&gt;1) И так находим изображение дороги или рисуем в программе Paint сами. Задаем размер картинки в пикселях&amp;nbsp; 640*480. Для этого можем использовать программу Фотошоп или тот же Paint. Задаем имя картинке fon.bmp&lt;br&gt;&amp;nbsp;&lt;br&gt;2) Находим изображение или рисуем в программе Paint небольшой автомобиль установив размер картинки 110*140 пикселей задаем имя картинке avto.bmp&lt;br&gt;&lt;br&gt;3) Аналогично находим изображение или рисуем в программе Paint небольшой мотоцикл установив размер картинки 110*140 пикселей задаем имя картинке moto.bmp&lt;br&gt;&lt;br&gt;Можно взять мои заготовки &lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/picters.zip&quot;&gt;здесь&lt;/a&gt;.&lt;br&gt;&amp;nbsp;&lt;br&gt;Теперь немного теории. Существует несколько способов сделать анимацию на экране, мы рассмотрим два наиболее простых.&lt;br&gt;&lt;br&gt;Первый способ заключается в том что мы помещаем на форму несколько компонентов TImage в нашем случае 3. Один в один из них загружаем фон, а в два других изображение мотоцикла и автомобиля соответственно и в режиме таймера будем изменять положения компонетов TImage с изображением автомобиля и мотоцикла относительно фона.&lt;br&gt;&lt;br&gt;Второй способ заключается в том, что мы создаем для нашего случая 4 объекта типа TBitMap, в первый загружаем фон, во второй - автомобиль, в третий - мотоцикл, а четвертый будет буфером обмена в котором мы вначале будем формировать картинку, а потом выводить ее на экран. Это необходимо делать для того чтобы избежать мерцания картинки на экране во время движения в результате ее перерисовки. Если эффект мерцания для вас не существенен, то можно выводить изображение сразу на экран.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;Рассмотрим первый способ.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Запускаем &lt;b&gt;Delphi &lt;/b&gt;и создаем новое приложение: &lt;b&gt;File-&amp;gt;New-&amp;gt;VCL Forms Application – Delphi.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Кидаем на форму три компонента &lt;b&gt;TImage&lt;/b&gt; из вкладки &lt;b&gt;Additional&lt;/b&gt; и компонент&lt;b&gt; TTimer&lt;/b&gt; из вкладки &lt;b&gt;System&lt;/b&gt;.&lt;br&gt;&lt;br&gt;В компонент &lt;b&gt;Image1&lt;/b&gt; в свойство &lt;b&gt;Picture&lt;/b&gt; загружаем подготовленный нами файл &lt;b&gt;fon.bmp&lt;/b&gt;, свойство &lt;b&gt;Align&lt;/b&gt; устанавливаем &lt;b&gt;alClient.&lt;/b&gt;&lt;br&gt;А форму растянем до размеров фона.&lt;br&gt;В компонент &lt;b&gt;Image2&lt;/b&gt; в свойство &lt;b&gt;Picture&lt;/b&gt; загружаем подготовленный нами файл &lt;b&gt;avto.bmp&lt;/b&gt; и перемещаем его на дорогу.&lt;br&gt;В компонент &lt;b&gt;Image3&lt;/b&gt; в свойство &lt;b&gt;Picture&lt;/b&gt; загружаем подготовленный нами файл &lt;b&gt;moto.bmp&lt;/b&gt; и перемещаем его на дорогу.&lt;br&gt;&lt;br&gt;Должно получиться следующее:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;img ilo-full-src=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/2/1.jpg&quot; alt=&quot;Создаем Анимацию на Delphi. Построение анимированных сцен на Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/anim_delphi/2/1.jpg&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;Переходим к написанию кода:&lt;br&gt;&lt;br&gt;Перед разделом&lt;b&gt; type&lt;/b&gt; добавим раздел &lt;b&gt;const&lt;/b&gt; и объявим две константы&lt;br&gt;&lt;br&gt;&lt;b&gt;const&lt;/b&gt;&lt;br&gt;scr_width = 640; // ширина формы&lt;br&gt;scr_height = 480; // высота формы&lt;br&gt;&lt;br&gt;В разделе&lt;b&gt; var&lt;/b&gt; объявим переменные &lt;b&gt;x,y,x1,y1&lt;/b&gt; типа &lt;b&gt;integer&lt;/b&gt;.&lt;br&gt;&lt;br&gt;&lt;b&gt;var&lt;/b&gt;&lt;br&gt;&amp;nbsp; Form1: TForm1;&lt;br&gt;&amp;nbsp; x,y,x1,y1:integer;&lt;br&gt;&lt;br&gt;Далее &lt;b&gt;дважды&lt;/b&gt; &lt;b&gt;щелкаем&lt;/b&gt; на компоненте &lt;b&gt;таймер&lt;/b&gt; и пишем следующий код процедуры: &lt;br&gt;&lt;br&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;br&gt;begin&lt;br&gt;x:=x+2;//текущая координата + шаг&amp;nbsp; для автомобиля&lt;br&gt;x1:=x1-2;//текущая координата + шаг&amp;nbsp; для мотоцикла&lt;br&gt;if x&amp;gt;scr_width+image2.Width then x:=-image2.Width;// ограничение справа&lt;br&gt;if x1&lt;-image3.Width then x1:=scr_width;// ограничение слева&lt;br&gt;//рисуем&lt;br&gt;image2.Left:=x;&lt;br&gt;image3.Left:=x1;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;Думаю здесь все понятно.&lt;br&gt;&lt;br&gt;В &lt;b&gt;свойствах таймера свойство интервал устанавливаем в пределах от 1 до 100&lt;/b&gt;, в зависимости от того какую скорость анимации вы хотите получить.&lt;br&gt;&lt;br&gt;&lt;b&gt;Полный код программы.&lt;/b&gt;&lt;br&gt;&lt;br&gt;unit anim;&lt;br&gt;&lt;br&gt;interface&lt;br&gt;&lt;br&gt;uses&lt;br&gt;&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br&gt;&amp;nbsp; Dialogs, ExtCtrls;&lt;br&gt;&lt;br&gt;const&lt;br&gt;scr_width = 640; // ширина формы&lt;br&gt;scr_height = 480; // высота формы&lt;br&gt;&lt;br&gt;type&lt;br&gt;&amp;nbsp; TForm1 = class(TForm)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1: TTimer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1: TImage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image2: TImage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image3: TImage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Timer1Timer(Sender: TObject);&lt;br&gt;&amp;nbsp; private&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br&gt;&amp;nbsp; public&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br&gt;&amp;nbsp; end;&lt;br&gt;&lt;br&gt;var&lt;br&gt;&amp;nbsp; Form1: TForm1;&lt;br&gt;&lt;br&gt;&amp;nbsp; x,y,x1,y1:integer;&lt;br&gt;implementation&lt;br&gt;&lt;br&gt;{$R *.dfm}&lt;br&gt;&lt;br&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;br&gt;begin&lt;br&gt;x:=x+2;//текущая координата + шаг&amp;nbsp; для автомобиля&lt;br&gt;x1:=x1-2;//текущая координата + шаг&amp;nbsp; для мотоцикла&lt;br&gt;if x&amp;gt;scr_width+image2.Width then x:=-image2.Width;// ограничение справа&lt;br&gt;if x1&lt;-image3.Width then x1:=scr_width;// ограничение слева&lt;br&gt;//рисуем&lt;br&gt;image2.Left:=x;&lt;br&gt;image3.Left:=x1;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;end.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Второй способ:&lt;/b&gt;&lt;br&gt;&lt;br&gt;Помещаем на форму компонент&lt;b&gt; TImage&lt;/b&gt; и компонент &lt;b&gt;TTimer.&lt;/b&gt;&lt;br&gt;Для компонента &lt;b&gt;Image1 &lt;/b&gt;свойство &lt;b&gt;Align &lt;/b&gt;устанавливаем &lt;b&gt;alClient&lt;/b&gt;.&lt;br&gt;А для формы свойство &lt;b&gt;AutoSize&lt;/b&gt; устанавливаем &lt;b&gt;True. &lt;/b&gt;&lt;br&gt;&lt;br&gt;Объявляем константы&lt;br&gt;&lt;br&gt;&lt;b&gt;const&lt;/b&gt;&lt;br&gt;scr_width = 640; // ширина экрана&lt;br&gt;scr_height = 480; // высота экрана&lt;br&gt;&lt;br&gt;В описании переменных &lt;b&gt;var &lt;/b&gt;объявляем четыре переменных для хранения графических картинок, тип&lt;b&gt; tbitmap&lt;/b&gt;&lt;br&gt;&lt;b&gt;var&amp;nbsp; &lt;/b&gt;&lt;br&gt;fon:tbitmap;//Графический образ&amp;nbsp; Фона&lt;br&gt;avto:tbitmap;//Графический образ&amp;nbsp; автомобиля&lt;br&gt;moto:tbitmap;//Графический образ&amp;nbsp; мотоцикла&lt;br&gt;scr_buffer:tbitmap;//Графический образ&amp;nbsp; автомобиля&lt;br&gt;x,y,x1,y1:integer;//координаты&amp;nbsp; автомобиля и мотоцикла &lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;Для того чтобы вывести на экран изображения нужно :&lt;/b&gt;&lt;br&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Активировать&amp;nbsp; созданные переменные&lt;/b&gt;&lt;br&gt;//создаем объекты&lt;br&gt;fon:=TBitmap.Create; // фон&lt;br&gt;moto:=TBitmap.Create;//&amp;nbsp; мотоцикл&lt;br&gt;avto:=TBitmap.Create; // машина&lt;br&gt;scr_buffer:=TBitmap.Create; // буфер обмена&lt;br&gt;scr_buffer.Width:=scr_width; // ширина буфера&lt;br&gt;scr_buffer.Height:=scr_height; // высота буфера&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; Загрузить изображения в эти переменные&lt;/b&gt;&lt;br&gt;// загружаем объекты&lt;br&gt;moto.LoadFromFile(&apos;moto.bmp&apos;); // мотоцикл&lt;br&gt;avto.LoadFromFile(&apos;avto.bmp&apos;); // машина&lt;br&gt;fon.LoadFromFile(&apos;fon.bmp&apos;);// фон&lt;br&gt;x:=0; //начальные координаты машины&lt;br&gt;y:=430;&lt;br&gt;x1:=500;// начальные координаты мотоцикла&lt;br&gt;y1:=380;&lt;br&gt;&amp;nbsp;&lt;br&gt;3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; Установить прозрачный фон вокруг машины и мотоцикла&lt;/b&gt;&lt;br&gt;avto.transparent:=true;//задаем прозрачность&lt;br&gt;moto.transparent:=true;&lt;br&gt;&amp;nbsp;&lt;br&gt;4) &lt;b&gt;И наконец вывести эти изображения на графический холст Image&lt;/b&gt;&lt;br&gt;//ление координат&lt;br&gt;x:=x+2;//текущая координата + шаг&amp;nbsp; для автомобиля&lt;br&gt;x1:=x1-2;//текущая координата + шаг&amp;nbsp; для мотоцикла&lt;br&gt;if x&amp;gt;scr_width+avto.Width then x:=-avto.Width;// ограничение справа&lt;br&gt;if x1&lt;-moto.Width then x1:=scr_width;// ограничение слева&lt;br&gt;//рисуем&lt;br&gt;scr_buffer.Canvas.Draw(0,0,fon);//возобновление фона&lt;br&gt;scr_buffer.Canvas.Draw(x1,y1,moto);//движение мотоцикла&lt;br&gt;scr_buffer.Canvas.Draw(x,y,avto);//движение машины&lt;br&gt;form1.Canvas.Draw(0,0,scr_buffer); //копируем содержимое буфера на экран&lt;br&gt;&lt;br&gt;При этом первая цифра в скобках, это координата &lt;b&gt;x&lt;/b&gt;, а вторая цифра соответственно координата &lt;b&gt;y&lt;/b&gt;&lt;br&gt;5) Для того , чтобы изображения стали двигаться, необходимо динамически менять координаты изображений на холсте, желательно стирая старое изображение.&lt;br&gt;Эту задачу выполняет компонент &lt;b&gt;Timer&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Полный код программы:&lt;/b&gt;&lt;br&gt;&lt;br&gt;unit anim;&lt;br&gt;&lt;br&gt;interface&lt;br&gt;&lt;br&gt;uses&lt;br&gt;&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br&gt;&amp;nbsp; Dialogs, ExtCtrls;&lt;br&gt;const&lt;br&gt;scr_width = 640; // ширина экрана&lt;br&gt;scr_height = 480; // высота экрана&lt;br&gt;type&lt;br&gt;&amp;nbsp; TForm1 = class(TForm)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1: TTimer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1: TImage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormCreate(Sender: TObject);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Timer1Timer(Sender: TObject);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br&gt;&amp;nbsp; private&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br&gt;&amp;nbsp; public&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br&gt;&amp;nbsp; end;&lt;br&gt;&lt;br&gt;var&lt;br&gt;&amp;nbsp; Form1: TForm1;&lt;br&gt;&amp;nbsp; fon:TBitmap;&lt;br&gt;&amp;nbsp; moto:TBitmap;&lt;br&gt;&amp;nbsp; scr_buffer:TBitmap;&lt;br&gt;&amp;nbsp; avto:TBitmap;&lt;br&gt;&amp;nbsp; x,y,x1,y1:integer;&lt;br&gt;implementation&lt;br&gt;&lt;br&gt;{$R *.dfm}&lt;br&gt;&lt;br&gt;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br&gt;begin&lt;br&gt;scr_buffer.Free;&lt;br&gt;fon.Free;&lt;br&gt;moto.Free;&lt;br&gt;avto.Free;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br&gt;begin&lt;br&gt;//создаем объекты&lt;br&gt;fon:=TBitmap.Create; // фон&lt;br&gt;moto:=TBitmap.Create;//&amp;nbsp; мотоцикл&lt;br&gt;avto:=TBitmap.Create; // машина&lt;br&gt;scr_buffer:=TBitmap.Create; // буфер обмена&lt;br&gt;scr_buffer.Width:=scr_width; // ширина буфера&lt;br&gt;scr_buffer.Height:=scr_height; // высота буфера&lt;br&gt;// загружаем объекты&lt;br&gt;moto.LoadFromFile(&apos;moto.bmp&apos;); // мотоцикл&lt;br&gt;avto.LoadFromFile(&apos;avto.bmp&apos;); // машина&lt;br&gt;fon.LoadFromFile(&apos;fon.bmp&apos;);// фон&lt;br&gt;x:=0; //начальные координаты машины&lt;br&gt;y:=430;&lt;br&gt;x1:=500;// начальные координаты мотоцикла&lt;br&gt;y1:=380;&lt;br&gt;avto.transparent:=true;//задаем прозрачность&lt;br&gt;moto.transparent:=true;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;br&gt;begin&lt;br&gt;x:=x+2;//текущая координата + шаг&amp;nbsp; для автомобиля&lt;br&gt;x1:=x1-2;//текущая координата + шаг&amp;nbsp; для мотоцикла&lt;br&gt;if x&amp;gt;scr_width+avto.Width then x:=-avto.Width;// ограничение справа&lt;br&gt;if x1&lt;-moto.Width then x1:=scr_width;// ограничение слева&lt;br&gt;//рисуем&lt;br&gt;scr_buffer.Canvas.Draw(0,0,fon);//возобновление фона&lt;br&gt;scr_buffer.Canvas.Draw(x1,y1,moto);//движение мотоцикла&lt;br&gt;scr_buffer.Canvas.Draw(x,y,avto);//движение машины&lt;br&gt;form1.Canvas.Draw(0,0,scr_buffer); //копируем содеримое буфера на экран&lt;br&gt;end;&lt;br&gt;&lt;br&gt;end.&lt;br&gt;&lt;br&gt;&lt;br&gt;

&lt;a target=&quot;_blank&quot; class=&quot;mrc__plugin_uber_like_button&quot; href=&quot;http://connect.mail.ru/share&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot;&gt;Нравится&lt;/a&gt;
&lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;

&lt;br&gt;&lt;br&gt;&lt;br&gt;Скачать исходники к примеру один можно &lt;a title=&quot;Исходники к примеру1&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/anim1.zip&quot;&gt;&lt;b&gt;здесь.&lt;/b&gt;&lt;/a&gt;&lt;br&gt;Скачать исходники к примеру два можно &lt;b&gt;&lt;a title=&quot;Исходник к примеру 2&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/anim_delphi/anim2.zip&quot;&gt;здесь. &lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;Автор Xaramamburu. Сайт автора &lt;b&gt;basicsprog.ucoz.ru &lt;/b&gt;&lt;br&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-07-28-6</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-07-28-6</guid>
			<pubDate>Thu, 28 Jul 2011 15:51:01 GMT</pubDate>
		</item>
		<item>
			<title>Краткая справка на русском языке (русский help) по библиотеке BASS 2.4.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;Краткая справка на русском языке (русский help) по библиотеке&amp;nbsp; BASS.dll версии 2.4.&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br&gt;&lt;img style=&quot;margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/bass/computers006.jpg&quot; align=&quot;left&quot;&gt;Для любителей писать плееры на &lt;b&gt;Delphi&lt;/b&gt;&amp;nbsp; я выкладываю краткую справку по библиотеке &lt;b&gt;bass.dll. &lt;/b&gt;Последнюю версию библиотеки можно скачать с официального сайта &lt;strong&gt;www.un4seen.com.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;Библиотека &lt;b&gt;BASS&lt;/b&gt; достаточно проста в использовании, имеет небольшой размер и поддерживает следующие возможности:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; воспроизведение звуковых образцов (сэмплов) в формате WAV/AIFF/MP3/MP2/MP1/OGG;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; потоковое воспроизведение звуковых файлов в формате MP3/MP2/MP1/OGG/WAV/AIFF;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; потоковое воспроизведение звука из интернет (по протоколам http и ftp, с поддержкой серверов Shoutcast, Icecast &amp;amp; Icecast2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nb...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 14pt&quot;&gt;Краткая справка на русском языке (русский help) по библиотеке&amp;nbsp; BASS.dll версии 2.4.&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br&gt;&lt;img style=&quot;margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/bass/computers006.jpg&quot; align=&quot;left&quot;&gt;Для любителей писать плееры на &lt;b&gt;Delphi&lt;/b&gt;&amp;nbsp; я выкладываю краткую справку по библиотеке &lt;b&gt;bass.dll. &lt;/b&gt;Последнюю версию библиотеки можно скачать с официального сайта &lt;strong&gt;www.un4seen.com.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;Библиотека &lt;b&gt;BASS&lt;/b&gt; достаточно проста в использовании, имеет небольшой размер и поддерживает следующие возможности:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; воспроизведение звуковых образцов (сэмплов) в формате WAV/AIFF/MP3/MP2/MP1/OGG;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; потоковое воспроизведение звуковых файлов в формате MP3/MP2/MP1/OGG/WAV/AIFF;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; потоковое воспроизведение звука из интернет (по протоколам http и ftp, с поддержкой серверов Shoutcast, Icecast &amp;amp; Icecast2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; воспроизведение файлов музыкальных форматов (XM, IT, S3M, MOD, MTM, UMX), а также формата MO3 (mod музыка, сжатая MP3/OGG);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; запись звука;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; поддержка эффектов обработки звуков и эффектов DirectX 8 (только для Win32): Chorus / compressor / distortion / echo / flanger / gargle / parametric eq / &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reverb и т.д.;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; поддержка многоканального (а не только стерео) звука, в том числе и многоканальных OGG/WAV/AIFF файлов;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; поддержка многопотоковых звуковых карт;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; поддержка позиционируемого 3D звука и EAX;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; поддержка расширений (плагинов);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; и многое другое. &lt;br&gt;&lt;br&gt;&lt;b&gt;Основные понятия&lt;/b&gt;&lt;br&gt;&lt;br&gt;Как и в большинстве библиотек для работы со звуковыми данными, в &lt;b&gt;BASS&lt;/b&gt; представлены следующие звуковые объекты:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; sample&lt;/b&gt; (сэмплы) - относительно небольшой оцифрованный звуковой фрагмент. &quot;Небольшие&quot; означает, что эти звуковые данные целиком загружаются в память.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; stream&lt;/b&gt; (потоки) - это звуковые данные, которые считываются порциями из звуковых файлов или из интернета и тут же передаются на воспроизводящее устройство. Потоковое воспроизведение позволяет проигрывать большие по размеру звуковые файлы и при этом не загружать их целиком в память.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; mod music&lt;/b&gt; (музыкальные модули) - это данные, представленные в музыкальных (так называемых &quot;трекерных&quot;) форматах. В файлах с трекерной музыкой, как правило, содержатся команды&amp;nbsp; для воспроизводящей программы (например, наподобие нотной записи) и образцы звучания инструментов, которые используются при воспроизведении (синтезе) этого музыкального модуля. &lt;br&gt;&lt;br&gt;Непосредственное воспроизведение звука происходит через так называемые &quot;каналы&quot;, поэтому все виды звуковых данных &lt;b&gt;(sample, stream и mod music)&lt;/b&gt; связываются с каналами воспроизведения звука.&lt;br&gt;&lt;br&gt;&lt;b&gt;Основные функции библиотеки BASS:&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;b&gt;Функции управления библиотекой (конфигурирование, инициализация, выгрузка, получение информации и т.д.);&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL&lt;/b&gt;; Инициализирует звуковой поток;&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_Init(-1, 44100, 0, handle, nil);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_Pause(): BOOL&lt;/b&gt;;&amp;nbsp; - Останавливает вывод, приостанавливая всю musics/samples/streams. Используйте BASS_Start(), чтобы возобновить вывод и приостановленные каналы. &lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_Pause();&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_Stop(): BOOL&lt;/b&gt;; - Останавливает вывод, останавливая все musics/samples/streams. Эта функция может использоваться после BASS_Pause(), чтобы остановить приостановленные каналы, так, чтобы они не были продолжены функцией BASS_Start(); &lt;br&gt;Пример использования:&lt;br&gt;BASS_Stop();&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_Start(): BOOL&lt;/b&gt;; - Начала (или продолжение) вывода звука.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_Start();&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_GetCPU(): float&lt;/b&gt;; - Возвращает процент использования центрального процессора.&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_SetVolume(volume: float ):BOOL&lt;/b&gt;; - установка громкости в Windovs. Параметр volume можно изменять в пределах от 0 до 1;&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_SetVolume(TrackBar1.Position/10);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_GetVolume(): float;&lt;/b&gt; - Возвращает текущий уровень громкости звука в системе. Функция обратная предидущей.&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_SetDevice(device: DWORD):BOOL;&lt;/b&gt; - Установка устройства вывода звукового потока. Параметр device = 0 - нет звука, 1 - вывод звука будет происходить на первое существующее устройство для вывода звука в системе. &lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_GetVersion(): DWORD&lt;/b&gt;; - Возвращает версию BASS, который загружен;&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;// проверка корректности загруженной BASS.DLL&lt;br&gt;&amp;nbsp; if (HIWORD(BASS_GetVersion) &lt;&amp;gt; BASSVERSION)&amp;nbsp; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox(0,&apos;Не корректная версия BASS.DLL&apos;,nil,MB_ICONERROR);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Halt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_Free():BOOL;&lt;/b&gt; - Освобождает все ресурсы, используемые устройством вывода. &lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_Free();&lt;br&gt;&lt;br&gt;&lt;b&gt;Функции с префиксом BASS_Stream..., предназначенные для работы с streams (загрузка, выгрузка, управление и т.д.);&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset: QWORD; length: QWORD; flags: DWORD): HSTREAM;&lt;/b&gt; - Создаем звуковой поток из локального файла формата MP3, MP2, MP1, OGG, WAV, AIFF. В случае успешного завершения функция BASS_StreamCreateFileвозвращает дескриптор потока (тип HSTREAM ), который можно использовать в функциях управления каналом воспроизведения вместо дескриптора канала. &lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;Имя потока := Bass_streamCreateFile(false, PChar(&apos;C:&amp;#92;muzic.mp3&apos;),0,0,0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_StreamFree(handle: HSTREAM): BOOL;&lt;/b&gt; - Освобождает звуковой поток, в скобках указываем имя потока.&lt;br&gt;&lt;b&gt;&lt;br&gt;Функции с префиксом BASS_Music..., предназначенные для работы с mod music (загрузка, выгрузка, управление и т.д.);&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_MusicLoad(mem: BOOL; f: Pointer; offset: QWORD; length: DWORD; flags: DWORD; freq: DWORD;): HMUSIC;&lt;/b&gt; - Загружает MOD музыкальный файл в форматах &lt;br&gt;MO3 / IT / XM / S3M / MTM / MOD / UMX. В случае успешного выполнения функция BASS_MusicLoad возвращает дескриптор типа HMUSIC , который можно использовать в функциях управления каналом воспроизведения вместо дескриптора канала.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;Имя потока:= BASS_MusicLoad(False, PChar(&apos;C:&amp;#92;test.s3m&apos;), 0, 0, BASS_MUSIC_RAMP {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF}, 0);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_MusicFree(handle: HMUSIC): BOOL;&lt;/b&gt; - Освобождает ресурсы&amp;nbsp; музыки, включая любой sync/DSP/FX. В скобках указываем имя потока.&lt;br&gt;&lt;b&gt;&lt;br&gt;Функции с префиксом BASS_Sample..., предназначенные для работы с samples (загрузка, управление, выгрузка и т.д.);&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_SampleLoad(mem: BOOL; f: Pointer; offset: QWORD; length: DWORD; max: DWORD; flags: DWORD): HSAMPLE;&lt;/b&gt; - Загружает WAV, AIFF, MP3, MP2, MP1, OGG или plugin поддерживает sample. В случае успешного выполнения функция BASS_SampleLoad возвращает дескриптор типа HSAMPLE , который можно использовать в функциях управления каналом воспроизведения вместо дескриптора канала.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;Имя потока:= BASS_SampleLoad(FALSE, PChar(&apos;C:&amp;#92;test.wav&apos;), 0, 0, 3, BASS_SAMPLE_OVER_POS {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_SampleFree(handle: HSAMPLE): BOOL; &lt;/b&gt;- Освобождает ресурсы Sample. В скобках указываем имя потока.&lt;br&gt;&lt;br&gt;&lt;b&gt;Функции с префиксом BASS_Channel..., предназначенные для работы с каналами (воспроизведение, остановка, позиционирование, управление громкостью, балансировка каналов и т.д.);&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelGetLength(handle, mode: DWORD): QWORD; &lt;/b&gt;- Узнать длинну звукового потока.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_ChannelGetLength(Имя потока,0);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;&lt;/b&gt; - Начать проигрывать звук.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;Bass_channelPlay(Имя потока, false);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelPause(handle: DWORD): BOOL;&lt;/b&gt; - Сделать паузу.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_ChannelPause(Имя потока);&lt;br&gt;&lt;b&gt;&lt;br&gt;function BASS_ChannelStop(handle: DWORD): BOOL;&lt;/b&gt; - Остановить проигрывание звука.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;BASS_ChannelStop(Имя потока);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelGetPosition(handle: DWORD; mode: DWORD):QWORD;&lt;/b&gt; - Возвращает позицию воспроизведения;&amp;nbsp; &lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;scrollbar1.Position:=bass_channelGetPosition(Имя потока,0);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD; mode: DWORD): BOOL;&lt;/b&gt; Установить новую позицию в потоке( необходимио для перемотки) Сдвигает позицию проигрывания на pos вперед.&lt;br&gt;&lt;b&gt;Пример использования&lt;/b&gt;&lt;br&gt;BASS_ChannelSetPosition(Имя потока, ScrollBar1.Position, 0);&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelBytes2Seconds(handle: DWORD; pos: QWORD): double; &lt;/b&gt;- Переводит текущуюю позицию воспроизведения во время (секунды);&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;var TrackPos: Double;&lt;br&gt;begin&lt;br&gt;TrackPos:=BASS_ChannelBytes2Seconds(Имя потока,BASS_ChannelGetPosition(Имя потока,0));&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelGetAttribute(handle, attrib: DWORD; var value: FLOAT): BOOL; &lt;/b&gt;- Получает атрибуты канала. &lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelSetAttribute(handle, attrib: DWORD; var value: FLOAT): BOOL;&lt;/b&gt; - Устанавливает значение атрибута канала.Параметр value зависит от выбранного атрибута. Например для баланса атрибут (BASS_ATTRIB_PAN), -1 - левый канал, +1 - правый канал, 0 - центр, а для громкости звука атрибут (BASS_ATTRIB_VOL), 0 - нет звука, 1 - максимальная громкость.&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;//установка громкости звука&lt;br&gt;BASS_ChannelSetAttribute(Имя потока,BASS_ATTRIB_VOL,trackBar1.Position/10);&lt;br&gt;//баланс&lt;br&gt;BASS_ChannelSetAttribute(Имя потока,BASS_ATTRIB_PAN,Trackbar12.Position/5);&lt;br&gt;&lt;br&gt;&lt;b&gt;Функции с префиксом BASS_FXS..., предназначенные для создания различных звуковых эффектов;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_ChannelSetFX(handle: DWORD; type: DWORD; priority: int):HFX;&lt;/b&gt; - Устанавливает эффект на поток, MOD музыку,&amp;nbsp; или канал записи.&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_FXSetParameters(handle: HFX; params: Pointer): BOOL;&lt;/b&gt; - Устанавливает параметры эффекта.&lt;br&gt;&lt;br&gt;&lt;b&gt;function BASS_FXGetParameters(handle: HFX; params: Pointer): BOOL;&lt;/b&gt; - Возвращает параметры эффекта.&lt;br&gt;&lt;br&gt;&lt;b&gt;Пример использования:&lt;/b&gt;&lt;br&gt;Создадим трех полосный эквалайзер.&lt;br&gt;объявляем глобальные переменные:&lt;br&gt;var&amp;nbsp; &lt;br&gt;p: BASS_DX8_PARAMEQ;//параметры эквалайзера&lt;br&gt;fx: array[1..3] of integer;//количество регуляторов для эквалайзера&lt;br&gt;channel: DWORD;&lt;br&gt;&lt;br&gt;Далее в процедуре, перед выполнением команды &lt;b&gt;BASS_ChannelPlay(channel, False);&lt;/b&gt; - проигрывание потока.&lt;br&gt;пишем код настроек эквалайзера&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fx[1] := BASS_ChannelSetFX(channel, BASS_FX_DX8_PARAMEQ, 1);//задаем эффект для первого регулятора&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fx[2] := BASS_ChannelSetFX(channel, BASS_FX_DX8_PARAMEQ, 1);//для второго&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fx[3] := BASS_ChannelSetFX(channel, BASS_FX_DX8_PARAMEQ, 1);//для третьего&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //задаем начальные значения параметров эквалайзера&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fGain := 0;//задаем усиление можно от -15 до 15. Поумолчанию 12.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fBandwidth := 18;//задаем полосу пропускания можно от 1 до 36. Поумолчанию 12. &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fCenter := 125;//задаем центральную частоту регулирования в Гц&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[1], @p);//задаем сделанные настройки для первого регулятора&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fGain := 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fBandwidth := 18;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fCenter := 1000;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[2], @p);//задаем сделанные настройки для второго регулятора&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fGain := 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fBandwidth := 18;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fCenter := 8000;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[3], @p);//задаем сделанные настройки для третьего регулятора&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_ChannelPlay(channel, False);//начинаем проигрывание&lt;br&gt;&lt;br&gt;//изменяем параметры усиления с помощью трех регуляторов в виде трекбаров&lt;br&gt;procedure TForm1.TrackBar1Change(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXGetParameters(fx[1], @p);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fgain := 15-TrackBar1.position;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[1], @p);&lt;br&gt;end;&lt;br&gt;&lt;br&gt;procedure TForm1.TrackBar2Change(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXGetParameters(fx[2], @p);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fgain := 15-TrackBar2.position;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[2], @p);&lt;br&gt;end;&lt;br&gt;&lt;br&gt;procedure TForm1.TrackBar3Change(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXGetParameters(fx[3], @p);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.fgain := 15-TrackBar3.position;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASS_FXSetParameters(fx[3], @p);&lt;br&gt;end;&lt;br&gt;&lt;br&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;При написании справки использовались материалы статьи&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;font-size: 8pt; font-family: Verdana; text-align: center; background-color: rgb(255, 255, 255);&quot;&gt;Шпаргалка по библиотеке BASS 2.4&lt;/span&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;&quot; с сайта &amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://delphiexpert.ru/view_lesson.php?id=44&quot; style=&quot;font-size: 8pt;&quot;&gt;http://delphiexpert.ru/view_lesson.php?id=44&lt;/a&gt;&lt;/div&gt;

&lt;a target=&quot;_blank&quot; class=&quot;mrc__plugin_uber_like_button&quot; href=&quot;http://connect.mail.ru/share&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot;&gt;Нравится&lt;/a&gt;
&lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;

&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;a title=&quot;Создание mp3 плеера&quot; href=&quot;http://basicsprog.ucoz.ru/publ/6&quot;&gt;Посмотреть пример создания mp3 плеера с использованием данных функции можно здесь.&lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-07-22-5</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-07-22-5</guid>
			<pubDate>Fri, 22 Jul 2011 15:14:03 GMT</pubDate>
		</item>
		<item>
			<title>Анимация на рабочем столе.</title>
			<description>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Анимация на рабочем столе.&lt;/span&gt;&lt;br&gt;&lt;/b&gt; &lt;/div&gt;&lt;p&gt;&lt;img ilo-full-src=&quot;http://basicsprog.ucoz.ru/blogg/animok/1_1.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;Создаем анимацию на рабочем столе с помощью Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/animok/1_1.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Сегодня мы создадим анимированную картинку на рабочем столе, которую можно перетаскивать мышкой в любое место рабочего стола.&lt;br&gt; &lt;/p&gt;&lt;p&gt;Предлагаю вот такое решения реализации данной задачи. Так как стандартные компоненты &lt;span lang=&quot;en-us&quot;&gt;Delphi&lt;/span&gt; не поддерживают анимированные изображения &lt;span lang=&quot;en-us&quot;&gt;GIF,&lt;/span&gt; мы возьмем любое анимированное изображений и с помощью программ &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Adobe ImageReady CS&lt;/span&gt; и&lt;span lang=&quot;en-us&quot;&gt; Adobe Photoshop CS&lt;/span&gt;&lt;/b&gt; разобьем анимацию на слои и сохраним каждый слой в формате &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;BMP&lt;/b&gt; c &lt;/span&gt;именами &lt;b&gt;1.&lt;/b&gt;&lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;BMP, 2.BM...</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;Анимация на рабочем столе.&lt;/span&gt;&lt;br&gt;&lt;/b&gt; &lt;/div&gt;&lt;p&gt;&lt;img ilo-full-src=&quot;http://basicsprog.ucoz.ru/blogg/animok/1_1.jpg&quot; style=&quot;margin-bottom: 5px; margin-right: 10px;&quot; alt=&quot;Создаем анимацию на рабочем столе с помощью Delphi.&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/animok/1_1.jpg&quot; align=&quot;left&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Сегодня мы создадим анимированную картинку на рабочем столе, которую можно перетаскивать мышкой в любое место рабочего стола.&lt;br&gt; &lt;/p&gt;&lt;p&gt;Предлагаю вот такое решения реализации данной задачи. Так как стандартные компоненты &lt;span lang=&quot;en-us&quot;&gt;Delphi&lt;/span&gt; не поддерживают анимированные изображения &lt;span lang=&quot;en-us&quot;&gt;GIF,&lt;/span&gt; мы возьмем любое анимированное изображений и с помощью программ &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Adobe ImageReady CS&lt;/span&gt; и&lt;span lang=&quot;en-us&quot;&gt; Adobe Photoshop CS&lt;/span&gt;&lt;/b&gt; разобьем анимацию на слои и сохраним каждый слой в формате &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;BMP&lt;/b&gt; c &lt;/span&gt;именами &lt;b&gt;1.&lt;/b&gt;&lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;BMP, 2.BMP&amp;nbsp;&lt;/b&gt; &lt;/span&gt;и т.д.&amp;nbsp; Полученные изображения мы будем выводить не на сам рабочий стол, а на форму, дело в том, что &amp;nbsp;мы сделаем форму&amp;nbsp; не видимой, а компонент видимым и получится так, что анимированное изображение находится на рабочем столе. И при этом все папки, ярлыки буду доступны…&lt;/p&gt;&lt;p&gt;Как разбивать анимированное изображение на отдельные кадры с помощью программ &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Adobe ImageReady CS&lt;/span&gt; и&lt;span lang=&quot;en-us&quot;&gt; Adobe &lt;br&gt; Photoshop CS&lt;/span&gt;&lt;/b&gt;, если интересно, то я могу рассказать в следующий раз, а пока скачать уже готовое по кадровое изображение можно&lt;b&gt; &lt;a title=&quot;Папка с изображениями&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/animok/gif.zip&quot;&gt;здесь&lt;/a&gt;&lt;/b&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Давайте запустим &lt;strong&gt;Delphi &lt;/strong&gt;и на форму кинем компонент &lt;strong&gt;&lt;span lang=&quot;en-us&quot;&gt;T&lt;/span&gt;Image&lt;/strong&gt;&lt;span lang=&quot;en-us&quot;&gt; &lt;/span&gt;из вкладки &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Additional&lt;/span&gt;.&amp;nbsp;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;В программном модуле &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;unit1&lt;/span&gt;&lt;/b&gt;&amp;nbsp; объявляем в разделе &lt;b&gt;var&lt;/b&gt;&lt;span lang=&quot;en-us&quot;&gt; &lt;/span&gt;следующие переменные.&lt;br&gt; &lt;/p&gt;&lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;var&lt;br&gt;Form1: TForm1;&lt;br&gt; i:integer;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;// &lt;/span&gt;количество кадров в изображении&lt;br&gt; file_name:string;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;// &lt;/span&gt;имя файла кадра изображения&lt;br&gt; mouse:tmouse;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;// &lt;/span&gt;необходима для определения координат мыши&lt;br&gt; xn,yn:integer;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;//&lt;/span&gt;начальные координаты мыши при нажатии левой кнопки мыши&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;p&gt;&amp;nbsp;&lt;br&gt;Добавим компонент &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;TTimer&lt;/span&gt; &lt;/b&gt;из вкладки&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;System&lt;/span&gt; &lt;/b&gt;и свойство &lt;b&gt;Interval&lt;/b&gt; ставим &lt;b&gt;70&lt;/b&gt;. Создаём обработчик событий на таймере &lt;b&gt;OnTimer&lt;/b&gt; кликаем по нему 2 раза. И пишем следующий код:&lt;br&gt; &lt;/p&gt;&lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;br&gt; begin&lt;br&gt; if i&lt;20 then i:=i+1 else i:=1;&lt;br&gt; file_name:=inttostr(i);&lt;br&gt; image1.Picture.LoadFromFile(&apos;gif&amp;#92;&apos;+file_name+&apos;.bmp&apos;);&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;//&lt;/span&gt;Формируем путь и имя файла. У меня картинки с изображениями находятся в папке &lt;b&gt;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;gif&lt;/span&gt;&lt;/b&gt;&lt;br&gt; end;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;p&gt;&amp;nbsp;&lt;br&gt;Для компонента компонент &lt;b&gt;Image1&lt;/b&gt; пропишем еще два события&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;On&lt;/span&gt;MouseDown&lt;span lang=&quot;en-us&quot;&gt; &lt;/span&gt;&lt;/b&gt;и&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;On&lt;/span&gt;MouseMove.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Для &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;On&lt;/span&gt;MouseDown &lt;/b&gt;пишем:&lt;br&gt; &lt;/p&gt;&lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);&lt;br&gt; begin&lt;br&gt; yn:=mouse.CursorPos.Y-(form1.Top);&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;//&lt;/span&gt;запоминаем координаты мыши&lt;br&gt; xn:=mouse.CursorPos.X-(form1.left);&lt;br&gt; end;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt; &lt;br&gt; &lt;/div&gt; &lt;br&gt; &lt;/div&gt; &lt;br&gt; &lt;br&gt;&lt;p&gt;Для &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;On&lt;/span&gt;MouseMove &lt;/b&gt;пишем:&lt;/p&gt; &lt;br&gt; &lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);&lt;br&gt; begin&lt;br&gt; if ssleft in shift then begin &lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;//&lt;/span&gt;если нажата &lt;br&gt; левая кнопка мыши то двигаем форму&lt;br&gt;form1.Top:=mouse.CursorPos.Y-yn;&lt;br&gt; form1.left:=mouse.CursorPos.X-xn;&lt;br&gt; end;&lt;br&gt; end;&lt;br&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt; &lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;Для события &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;OnCreate&lt;/b&gt; &lt;/span&gt;формы пропишем&lt;span lang=&quot;en-us&quot;&gt;:&lt;br&gt;&lt;/span&gt;&lt;br&gt; &lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;br&gt; begin&lt;br&gt; i:=1;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;//&lt;/span&gt;устанавливаем начальный кадр&lt;br&gt; end;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;p&gt;&amp;nbsp;&lt;br&gt;Дальше сделаем форуму не видимой. Выделяем форму и свойство &lt;b&gt;Color&lt;/b&gt; ставим &lt;b&gt;clWhite &lt;/b&gt;то есть белый&lt;span lang=&quot;en-us&quot;&gt;,&lt;/span&gt; свойство&lt;b&gt; TransparentColor&lt;/b&gt;&amp;nbsp; ставим &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;True, &lt;/b&gt;&amp;nbsp;&lt;/span&gt;свойство&lt;span lang=&quot;en-us&quot;&gt; &lt;b&gt;TransparentColorValue&lt;/b&gt; &lt;/span&gt;ставим &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;clWhite&lt;/b&gt;, &lt;/span&gt;свойство &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;Position&lt;/b&gt; &lt;/span&gt;ставим&lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;&lt;br&gt; poMainFormCenter&lt;/span&gt;,&amp;nbsp; &lt;/b&gt;а свойство &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;BorderStyle&lt;/b&gt; ставим &lt;b&gt;bsNone&lt;/b&gt;&lt;/span&gt;;&lt;br&gt; &lt;/p&gt;&lt;p&gt;Размеры&amp;nbsp; &lt;b&gt;формы&lt;/b&gt; &lt;span lang=&quot;en-us&quot;&gt;(&lt;/span&gt;свойства&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;Width&lt;/span&gt; - ширина&lt;span lang=&quot;en-us&quot;&gt; &lt;/span&gt;и &lt;span lang=&quot;en-us&quot;&gt;Height&lt;/span&gt; - высота&lt;/b&gt;) и размеры компонента&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;Image1 &lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;en-us&quot;&gt;(&lt;/span&gt;свойства&lt;b&gt; &lt;span lang=&quot;en-us&quot;&gt;Width &lt;/span&gt;и &lt;span lang=&quot;en-us&quot;&gt;Height&lt;/span&gt;&lt;/b&gt;)&lt;span lang=&quot;en-us&quot;&gt; &lt;br&gt; &lt;/span&gt;устанавливаем равными размерам изображения. Размеры изображения можно посмотреть в свойствах файла изображения, щелкнув по нему правой кнопкой мыши и выбрав пункт &lt;b&gt;Свойства-&lt;span lang=&quot;en-us&quot;&gt;&amp;gt; &lt;/span&gt;подробно.&lt;/b&gt; В нашем случае &lt;b&gt;&lt;span lang=&quot;en-us&quot;&gt;Width&lt;/span&gt;=200&lt;span lang=&quot;en-us&quot;&gt; &lt;/span&gt;и &lt;span lang=&quot;en-us&quot;&gt;Height&lt;/span&gt;=200&lt;/b&gt;) запускаем программу.&lt;br&gt;&lt;/p&gt;&lt;br&gt;Ну и на по следок, я покажу как скрыть кнопку с панели задач. Для этого выбираем в меню &lt;span lang=&quot;en-us&quot;&gt;&lt;b&gt;Project -&amp;gt; View Source&lt;/b&gt; &lt;/span&gt;и приводим код к следующему виду: &lt;br&gt; &lt;br&gt; &lt;table width=&quot;100%&quot; align=&quot;left&quot; border=&quot;1&quot; cellpadding=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style=&quot;padding: 0.75pt; background-color: rgb(255, 255, 102); background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 50%; -moz-background-size: auto auto; width: 99.38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;&quot; width=&quot;99%&quot;&gt; &lt;span style=&quot;font-size: 8pt;&quot;&gt;&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt; program Project1;&lt;br&gt; uses&lt;br&gt; Forms,&lt;br&gt; windows,&lt;br&gt; Unit1 in &apos;Unit1.pas&apos; {Form1};&lt;br&gt; &lt;br&gt; {$R *.res}&lt;br&gt; &lt;br&gt; &lt;br&gt; begin&lt;br&gt; Application.Initialize;&lt;br&gt; Application.CreateForm(TForm1, Form1);&lt;br&gt; ShowWindow(Application.Handle,sw_HIDE);//&lt;/span&gt;строка скрывает кнопку формы с панели задач&lt;span style=&quot;font-size: 8pt;&quot; lang=&quot;en-us&quot;&gt;&lt;br&gt; Application.Run;&lt;br&gt; end.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border: 1px inset; overflow: auto; max-height: 200px;&quot;&gt;&lt;!--uzc--&gt;[b]Код программы[/b]&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;span style=&quot;font-size: 8pt;&quot;&gt; &lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Внимание закрыть такое приложение можно через диспетчер программ &lt;br&gt; &lt;span lang=&quot;en-us&quot;&gt;Windows (&lt;/span&gt;процесс &lt;span lang=&quot;en-us&quot;&gt;Progect1).&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;

&lt;a target=&quot;_blank&quot; class=&quot;mrc__plugin_uber_like_button&quot; href=&quot;http://connect.mail.ru/share&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot;&gt;Нравится&lt;/a&gt;
&lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;


&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a title=&quot;Исходник&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/animok/animok.zip&quot;&gt;&lt;br&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a title=&quot;Исходник&quot; href=&quot;http://basicsprog.ucoz.ru/blogg/animok/animok.zip&quot;&gt;Скачать&lt;/a&gt;&lt;span lang=&quot;en-us&quot;&gt;&lt;a href=&quot;http://basicsprog.ucoz.ru/blogg/animok/animok.zip&quot;&gt; исходник&lt;/a&gt;.&lt;/span&gt;&lt;/b&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Начиная с &lt;b&gt;Delphi 2007&lt;/b&gt; в ее поставку входит модуль&lt;b&gt; GifImg,&lt;/b&gt; который позволяет проигрывать &lt;b&gt;Gif&lt;/b&gt; анимацию.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Ниже привожу пример его использования (Gif анимация в Delphi) :&lt;/b&gt;&lt;/p&gt;&lt;p&gt;На форме надо разместить компонент &lt;b&gt;TImage&lt;/b&gt; и &lt;b&gt;TButton&lt;/b&gt; и в папку с проектом скопировать &lt;b&gt;Gif&lt;/b&gt; файл.&lt;/p&gt;unit Unit1;&lt;br&gt;&lt;br&gt;interface&lt;br&gt;&lt;br&gt;uses&lt;br&gt;&amp;nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br&gt;&amp;nbsp; Dialogs, StdCtrls, ExtCtrls, &lt;b&gt;GifImg&lt;/b&gt;;&lt;br&gt;&lt;br&gt;type&lt;br&gt;&amp;nbsp; TForm1 = class(TForm)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timer1: TTimer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1: TImage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button1: TButton;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure Button1Click(Sender: TObject);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;br&gt;&amp;nbsp; private&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Private declarations }&lt;br&gt;&amp;nbsp; public&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Public declarations }&lt;br&gt;&amp;nbsp; end;&lt;br&gt;&lt;br&gt;var&lt;br&gt;&amp;nbsp; Form1: TForm1;&lt;br&gt;&amp;nbsp; &lt;b&gt;Gif: TGifImage;&lt;/b&gt;&lt;br&gt;&lt;br&gt;implementation&lt;br&gt;&lt;br&gt;{$R *.dfm}&lt;br&gt;&lt;br&gt;&lt;b&gt;//При нажатии на кнопку загружаем анимацию в Image1&lt;/b&gt;&lt;br&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br&gt;begin&lt;br&gt;&lt;b&gt;//создаем объект gif&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gif := TGifImage.Create;&lt;br&gt;&lt;b&gt;//загружаем gif файл&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gif.LoadFromFile(&lt;b&gt;&apos;имя файла.gif&apos;&lt;/b&gt;);&lt;br&gt;&lt;b&gt;//включаем анимацию&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gif.Animate := True;&lt;br&gt;&lt;b&gt;//задаем ширину и высоту объекта Image1 по размерам Gif&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1.Width:=Gif.Width;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1.Height:=Gif.Height;&lt;br&gt;&lt;b&gt;//Подключаем Image1 к Gif&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1.Picture.Assign(Gif);&lt;br&gt;end;&lt;br&gt;&lt;br&gt;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;br&gt;begin&lt;br&gt;&lt;b&gt;//освобождаем объект Gif&lt;/b&gt;&lt;br&gt;&amp;nbsp;Gif.Free;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;end.&lt;span lang=&quot;en-us&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;div align=&quot;center&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-06-30-4</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-06-30-4</guid>
			<pubDate>Thu, 30 Jun 2011 13:05:10 GMT</pubDate>
		</item>
		<item>
			<title>Ошибка &apos;Не выполнена проверка подлинности&apos; при работе с компонентами ADOConnection, ADOTable, ADOQuery… и базой MS Access 2003...</title>
			<description>&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;При
подключении базы компьютер ругается: &apos;Не выполнена проверка подлинности&apos;.&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Порой при
работе с ADO появляется ошибка: &quot;Не выполнена проверка подлинности&quot;.
Что значит, эта ошибка и как ее устранить?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Такая ошибка
возникает, когда один из компонентов &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;пытается подключиться ...</description>
			<content:encoded>&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;При
подключении базы компьютер ругается: &apos;Не выполнена проверка подлинности&apos;.&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Порой при
работе с ADO появляется ошибка: &quot;Не выполнена проверка подлинности&quot;.
Что значит, эта ошибка и как ее устранить?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Такая ошибка
возникает, когда один из компонентов &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;пытается подключиться к базе данных, а
само подключение в компоненте &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;еще не активировано.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Дело в том,
что соединение с базой данных компонентов &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt; и др. , &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;связанных&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&amp;nbsp; &lt;/span&gt;с &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, происходит, даже если в самом &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;не предпринимается никаких действий
для открытия базы данных. Достаточно в компонентах &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt; и др.&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt; установить свойство &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;Active&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt; -&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;true&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;, и он
начнет подключаться к базе данных. При этом свойство &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;Connected&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;
компонента &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;,
&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;автоматически установиться
в &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;true&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;,
&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;если в свойстве &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ConnectionStrin&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt; компонента &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;
верно указан путь к базе.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;Для
устранения данной ошибки:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;b&gt;1.&lt;/b&gt; Проверьте, верно, ли указан путь к базе в свойстве &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ConnectionStrin&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt; компонента &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt; если&lt;b style=&quot;&quot;&gt; &lt;/b&gt;он
задается программно, то правильно ли он задается?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;br&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;b&gt;2.&lt;/b&gt; Убедитесь, что форма, содержащая компонент &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOConnection&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;загружается раньше других форм использующих данное
подключение. Для этого выберите &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Project&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Options&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Forms&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://basicsprog.ucoz.ru/blogg/proverka_podl/3.jpg&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;b&gt;3.&lt;/b&gt; Для всех компонентов&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt; и др. &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;установить свойство &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Active&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt; -&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;false&lt;/span&gt;&lt;/b&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;&lt;b&gt;4.&lt;/b&gt; Просмотрите
события &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;OnCreate&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&amp;nbsp; &lt;/span&gt;для всех форм использующих активацию &lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Active&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt; -&amp;gt;
&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;true&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt; для компонентов &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt; и др.
&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;или &lt;b style=&quot;&quot;&gt;открытие таблиц (запросов)&lt;/b&gt; например &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOTable&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Open&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;ADOQuery&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;Open&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;, &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;если
такие события есть перенесите их в&lt;b style=&quot;&quot;&gt; &lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;OnShow&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt; font-family: Arial;&quot;&gt;&amp;nbsp; &lt;/span&gt;или в &lt;/span&gt;&lt;b style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot; lang=&quot;EN-US&quot;&gt;OnActivate&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Arial;&quot;&gt;.&lt;br&gt;&lt;br&gt;&lt;br&gt;

&lt;a target=&quot;_blank&quot; class=&quot;mrc__plugin_uber_like_button&quot; href=&quot;http://connect.mail.ru/share&quot; data-mrc-config=&quot;{&apos;type&apos; : &apos;button&apos;, &apos;caption-mm&apos; : &apos;1&apos;, &apos;caption-ok&apos; : &apos;1&apos;, &apos;text&apos; : &apos;true&apos;, &apos;width&apos; : &apos;100%&apos;, &apos;nc&apos; : &apos;1&apos;}&quot;&gt;Нравится&lt;/a&gt;
&lt;script src=&quot;http://cdn.connect.mail.ru/js/loader.js&quot; type=&quot;text/javascript&quot; charset=&quot;UTF-8&quot;&gt;&lt;/script&gt;

&lt;br&gt;&lt;/span&gt;&lt;/span&gt;</content:encoded>
			<link>https://basicsprog.ucoz.ru/blog/2011-06-19-3</link>
			<category>Delphi</category>
			<dc:creator>xaramamburu</dc:creator>
			<guid>https://basicsprog.ucoz.ru/blog/2011-06-19-3</guid>
			<pubDate>Sun, 19 Jun 2011 17:03:01 GMT</pubDate>
		</item>
	</channel>
</rss>