| ||||||||||||||
Главная
Новости
Delphi
Учебники
База
E-магазин
F.A.Q
Форум
| ||||||||||||||
|
Здравствуйте. Меня зовут Semen. Я ведущий уроков по Delphi. Мы с вами попатаемся научиться, а для некоторых просто вспомнить, некоторые азы и тонкости этой замечательной среды программирования. | Что же такое – Delphi? Это среда разработки, используемой прежде всего для создания и поддержки приложений, предназначенных как для отдельных персональных компьютеров, так и для серверов. Delphi, как и разработанные с ее помощью приложения, могут функционировать под практически любой 32 разрядной операционной системой типа Windows 95, 98, 2000, NT. Это довольно легкая в изучении среда, и в то же время довольно сложная. Изучить ее полностью и досконально – невозможно. Но мы постараемся с вами преодолеть этот путь семимильными шагами – практикой. Ведь легче всего запоминается то, с чем сталкиваешься непосредственно. Delphi имеет пользовательский графический интерфейс, подобный Visual Basic и C++. Человек, ранее работавший в подобной среде, не будет чувствовать себя не в своей тарелке. Честно говоря, на данный момент множество фирм приняло за стандарт данный интерфейс для собственных приложений. Хорошим стимулом к получению знаний по данному предмету является знание хоть какого-нибудь языка программирования, или принципов написания программы. Идеально – знание языка программирования Pascal. Ведь весь исходный текст программы на Delphi пишется на языке Object Pascal, практически ничем не отличающимся от принципов, заложенных в такой знаменитой программной оболочке. Синтаксис, принцип модуля, процедуры, функции, все взято за основу. О Delphi говорят как о среде быстрого создания приложений. Это технология визуального программирования, т.е. пользователь оформляет свою будущую программу, и видит результаты своей работы еще до запуска самой программы. В принципе, сам процесс написания приложения разделяется на две части. Мышеклацательная – программист располагает на окна своей программы необходимые элементы, позиционирует, устанавливает нужные размеры, меняет свойства. Клавиатуротопательная – собственно, написание программного кода, описание свойств элементов, доступных только во время работы приложения, описание реакций на событие появление окна, нажатия на кнопку и др. Для задания каких-либо свойств элементу разрабатываемого приложения вовсе не обязательно писать массивные текстовые строки, достаточно изменить это свойство в инспекторе объектов (так называемом мониторе свойств выбранного элемента). Это изменение автоматически дополнит или модифицирует программный код. Это большой плюс в визуальной технологии программирования. Создавая или модифицируя свой программный продукт, пользователь не зная или не обращая внимания на некоторые свойства элемента программы, а используя только необходимые, пишет полностью готовый рабочий продукт, порой выступающий на равных по сложности, с написанными на невизуальном редакторе. Дополнительное удобство в работе в среде Delphi это мощная справочная система. Контекстно-зависимая от текущего выбранного элемента или строки программы, позволяет получить подробнейшую справку. Вложенные примеры позволяют, не отходя далеко от интересующей вас информации, просмотреть реализацию уже готовой, возможно полезной для вас, программы. Естественно, справка, как и сама среда разработки, описана на английском языке. Одновременно существуют и русифицированные файлы справки. Я даже слышал о выходе русской версии Delphi 5. Для начинающих можно сказать, все, что вы видите на экране во время работы различных Windows приложений, все элементы (кнопки, бегунки, меню и т.п.) можно реализовать в Delphi. Контекстно-зависимое внедрение файлов справки позволяет поднять уровень проектируемого приложения на порядок выше. А не сказать про поддержку работы с базами данных – значит не сказать многого. При работе в среде программирования посредством так называемого BDE (Borland Database Engine), системного администратора баз данных, можно получать прямой доступ к таким стандартным форматам данных, как dBASE, Paradox, FoxPro, Access, ASCII таблицам. Набор драйверов Borland SQL Links обеспечивает все необходимые соединения с SQL-серверами. Далее немного вашего внимания уделю процессу установки Delphi на компьютер. Требования к аппаратуре и системе при установке Delphi различных версий. Я бы рекомендовал придерживаться этого правила при выборе варианта установки той или иной версии. Версия Дисковое пространство для установки Оперативная память (минимум – рекомендуемая) Процессор (минимум) Операционная система (минимальные требования) Delphi 3 50-170 MB 8–12 МВ 80486 Windows 95, 98;Windows NT 3.51 Service Pack 5 Delphi 4 60-154 МВ 16–32 МВ 486/66 Windows 95, 98;Windows NT 4.0 (Service Pack 3) Delphi 5 80-200 МВ 32–64 МВ Pentium 90 Windows 95, 98;Windows NT 4.0 (Service Pack 3) Дисковое пространство указано в пределах типа установки. От компактной до полной. Данные взяты из технической документации по установке. Далее, на словах, что необходимо для работы. Это мышь, нормальный цветной монитор, желательно звуковую карту и CD-привод. Чем же отличаются эти версии. Прежде всего, более последующая версия имеет лучший интерфейс, добавляются новые компоненты, появляется больше возможностей при написании и отладки приложений. Действительно, сильный скачек в перемене внешнего вида произошел из версии 3 в 4. Теперь значки меню имеют стандартный, общепринятый вид, добавлен проводник по программному коду, для быстрого перехода к необходимому месту в программе и пр. Я лично пользуюсь 4 версией, и мне, пока, хватает. Итак, установка. Если во время инсталляции будет предложен вариант установки, рекомендую не мучится и выбрать типичную установку, которая установлена галочкой по умолчанию. Будет произведено копирование основных компонентов, библиотек, шаблонов. Выборочная инсталляция обычно для тех, кто уже имел опыт работы, и знает, с какими компонентами он работает После успешного завершения установки и перезагрузки компьютера (при возникших проблемах установки – читайте прилагаемую документацию) вы увидите в меню "программы" установленные: среда разработки Delphi, дополнительные программы, файлы помощи. Запустим значок с надписью Delphi N, где N – номер версии. При этом запускается сама оболочка создания приложений, называемая интегрированной средой разработки IDE (Integrated Development Environment). Именно это название часто встречается в литературе и файлах справки. Именно эта среда и включает в себя множество функций для создания приложения. Даже у самого производителя – корпорации Borland International наилучшей рекламой для этого продукта было сказано, что сам Delphi писался на Delphi. Появившемся на экране окнам можно дать следующую предварительную характеристику. Главное окно. Оно располагается в верхней части экрана, в котором располагается меню, панель инструментов и палитра компонентов. Панель инструментов представляет собой набор кнопок для быстрого доступа к необходимой функции меню. На палитре компонентов, представляющей собой множественные тематические страницы, располагаются визуальные и невизуальные компоненты вашей будущей программы (невизуальные компоненты видны только при проектировании приложения). Пожалуйста, не перепутайте инструменты и компоненты. Главное окно остается открытым все время работы IDE. Закрывая его, вы тем самым закрываете Delphi и все открытые в нем окна. Инспектор объектов. Как было сказано выше, при разработке приложения его очень часто приходится использовать. Окно Object Inspector содержит две страницы. На первой, Properties, постоянно отображаются все доступные свойства выбранного компонента. В левой колонке содержится список, в правой – текущие значения по умолчанию. На второй странице, Events, возможные обработчики событий для выбранного компонента. В левой колонке – названия, в правой – соответствующие свойства или процедуры. На рисунке вы можете видеть Object Inspector с установленными свойствами формы1 (это окно вышей программы). Что же такое свойства и реакции на события. Каждый объект в Delphi, даже само окно разрабатываемого приложения, имеют определенные свойства. Например цвет, размер, отображаемый текст и т.п. Эти свойства можно менять еще до запуска проектируемой программы на выполнение. В зависимости от изменяемого свойства результат можно просматривать уже сразу. Реакции на события, это результат произошедшего системного события, например щелчок мыши, нажатие на кнопку, открытие окна и т.п. Реакцию на событие назначают программно, указывая список действий, которые необходимо произвести. Например, если пользователь выполняет клик по кнопке, производится копирование файла. Подробнее с инспектором объектов будет сказано по ходу работы с новыми программами в следующих уроках. Окно редактора кода. Оно имеет заголовок на момент первого запуска Unit1. В редакторе кода могут быть открыты сразу несколько файлов. Каждый открытый файл размещается на отдельной странице, а его название отображается на вкладке в верхней части. Если в ващей программе три окна, то они будут взаимодействовать в процессе работы с тремя так называемыми модулями (Unit). Все эти модули и отображаются в редакторе. В окне кода программист непосредственно пишет текстовую часть программы. Текстовая часть разбивается на несколькие части, называемые процедурами и функциями, которые работают отдельно одна от другой. Возможно и перенаправление выполнения программы их одного места в другое. Как правило, в серьезные проектах основную работу программист производит именно здесь. Я вас на первых порах не буду загружать множественными командами, разбираться мы будем потихоньку, начиная с самого простого. Здесь важно понять принцип. Проектировщик форм. Как вы уже, наверное, знаете или догадываетесь, каждое Windows-приложение выполняется в собственном окне. Минимальное количество таких окон равно 1. Delphi при запуске автоматически предлагает пользователю новый проект, открывая пустое (незаполненное) окно под названием Form1 и назначает его главным окном. То есть вы уже видите то самое окно, которое будет содержать ваша программа. Перенося на него элементы из палитры компонентов, вы тем самым предварительно оформляете его. Главное окно в проекте может быть только одно. Все другие создаваемые окна будут дочерними. Закрывая главное окно стандартной кнопкой закрытия окна, или программно, вы закрываете и все дочерние окна. Представьте это себе на примере текстового редактора MS Word. Главное окно создается первым, и соответственно пользователь его видит тоже первым. Максимально возможное количество открытых проектировщиков форм – количество окон в вашем проекте. Но для начала мы с вами будем работать только с одним окном в проекте. Итак, при запуске Delphi мы с вами видим уже открытый новый проект для создания приложения. Давайте запустим его на выполнение. Это можно сделать в любом окне IDE нажатием на кнопку F9, выбрав соответствующий пункт "Run" в меню "Run" или выбором одноцветной кнопки на панели инструментов. Происходит сравнительно недолгий процесс компиляции (преобразование удобочитаемых для вас данных в удобочитаемую форму для компьютера), в результате которого создается EXE файл. Далее этот файл, в случае успешного создания, запускается на выполнение. Во время выполнения из множества окон Delphi остается только главное окно и окно редактора кода. Поздравляю! Практически ничего не делая, и сами того не ожидая, вы создали собственную программу. Эта программа имеет вид стандартного Windows-окна с заголовком Form1, со стандартными кнопками: свернуть, на весь экран, закрыть. Его можно позиционировать, изменять размер. По умолчанию она отображается в том же виде, что и во время разработки, имеет те же размеры и позицию на экране. Закроем запущенную программу. Delphi автоматически переводит окна в то состояние, которое было до запуска проекта на выполнение. Снова на экране появляется инспектор объектов и редактор формы. Для избежания отображения ненужных окон во время запуска проекта, я рекомендую установить опцию автоматического свертывания всего Delphi со своими окнами в панель задач. Войдите в меню Tools, выберите пункт Environment Options и на вкладке Preferences установите галочку Minimize on run (минимизировать при запуске). Далее Ok. Теперь попробуйте снова запустить проект на выполнение. Теперь вам ничего не мешает лицезреть свое творение. Теперь попробуем сохранить проект на диске. Настоятельно рекомендую сохранять на диске новый проект сразу, поскольку он находится в памяти компьютера, и вы понимаете, какие могут быть последствия, если пропадет электричество или ваш компьютер решит немного отдохнуть от работы. Сохраняем все файлы проекта. Для этого выбираем пункт Save All, находящийся в меню File. Delphi предлагает сохранить модуль программы Unit1 как… Сохраним его под этим же названием, что и предлагается. Замечание: сколько существует окон в вашей программе, столько и будет модулей (Unit). Поэтому имеет смысл сохранять каждый проект в отдельный каталог. Особенно, если у вас много окон в программе. Далее будет предложено сохранить проект как… т.е. задать название всего проекта. Как будет называться проект, под таким же именем и будут создаваться исполняемые EXE файлы. Названия файлов должны состоять из одного слова или слов, написанных английскими буквами, цифры допустимы только начиная со второго символа, пробелы – недопустимы (используйте в таких случаях знак подчеркивания). Для информации привожу перечень сохраняемых при этом файлов на диске: DPR – файл проекта. Содержит он основной код программы, ссылки на все окна (формы) проекта и относящиеся к ним модули. В нем также содержится код инициализации. Имеет одноименное название с проектом. PAS – pascal файл. Он содержит текст, который вы видите в окне редактора кода так называемого модуля программы. DFM – delphi form. Представляет собой файл с полными данными о проектировщике формы. Позиция, размер, расположенные компоненты и пр. Форма приложения является неотъемлемой частью модуля PAS и имеет то же название. DCU – двоичный файл модуля. Имеет одноименное название с модулем. RES – ресурсный файл. Содержит в себе иконки, значки указателя мыши, картинки, звуки. DOF, DSK – содержат настройки проекта. CFG – содержит настройки конфигурации проекта. EXE – откомпилированная программа. Сохраняется автоматически при запуске проекта на выполнение. Обновляется в момент компиляции. Имеет одноименное название проекта. Полностью самостоятельное приложение. По ходу работы в среде Delphi могут автоматически создаваться файлы, имеющие расширение, начинающееся символом ~. Это резервные копии файлов, которые создаются при их повторном сохранении. Итак, мы с вами установили, запустили Delphi, даже создали новую программу. В следующий уроке попробуем рассмотреть простейшие примеры программ, одновременно рассматривая и некоторые особенности работы в Delphi. Не пугайтесь изобилия информации, изложенной в первом уроке. Некоторые подробно рассмотренные данные вы сможете использовать в справочных целях. По ходу следующих занятий мы с вами будем возвращатся к предыдущим темам, и постепенно у вас будет складываться общая картина всех знаний, полученных от маленькой теории, и прежде всего от практики.
Часть урока для новичков | Здравствуйте. В этом уроке мы с вами немного расширим наши знания, напишем простую рабочую программу. Запускаем для начала Delphi. Напишем простую программу реакции нажатия на кнопку. Как вы уже заметили из этих нескольких запусков Delphi, сразу открывается новый пустой проект. Нам предлагается начать новый проект. Как вы помните, проектируемая форма или окно, которое будет видеть пользователь при запуске программы на выполнение, по умолчанию называется Form1. Перед расположением на ней кнопок, давайте его назовем как-нибудь по-русски. Например: "Это моя программа!". Это можно сделать в инспекторе объектов (Object Inspector). Там отображаются свойства выбранных компонентов на форме. Поскольку на форме ничего пока нет, то выбранной считается сама форма Form1 (выбранный элемент можно увидеть в самом верху инспектора объектов в ниспадающем списке). Меняем заголовок проектируемой формы. Свойство Caption на страничке свойств Properties. Пишем в редактируемом поле правее фразу заголовка. Во время ввода названия обратите внимание – набираемый текст немедленно в точности повторяется на форме. Об этом и говорилось в прошлом уроке. Мы с вами видим результат своей работы еще до запуска программы на выполнение. Если во время работы вас стесняют размеры окон инспектора объектов, проектируемой формы, редактора кода или они наоборот, выглядят великовато, поменяйте их размеры, отпозиционируйте в удобное место. Далее поместим на нашу проектируемую форму три стандартные кнопки. Выбираем на листообразной палитре компонентов компонент под названием Button одинарным щелчком мышки. Вот как от выглядит Примечание: при подведении мышки на палитру компонентов выскакивает всплывающая подсказка, объясняющая пользователю ее название. Итак, мы щелкнули по этому компоненту и он остался нажатым. Теперь необходимо щелкнуть на нашей форме, где мы хотели бы эту кнопку оставить. Повторите эту операцию еще два раза, пока на форме не окажется три кнопки Button1, Button2, Button3. Попробуйте подвигать эти кнопки по форме при нажатой левой клавишей мышки. Установите их в произвольном порядке, но чтобы они не мешали друг другу. Теперь назовем эти кнопки по их дальнейшему функциональному назначению. Щелкаем один раз (!) по кнопке Button1. Она оказывается выделенной. В инспекторе объектов моментально отображаются все доступные свойства для этой кнопки. Меняем название кнопки, как вы догадываетесь, тоже сменой свойства Caption. Пишем: "Свернуть". Далее выбираем кнопку Button2. Переименовываем ее в "Белая". Повторим операцию смены названия для третьей кнопки "Закрыть". Внешний вид программы готов. Как вы убедились – нет ничего сложного в оформлении внешнего вида проектируемой формы-окна. Пока что ваши действия в написании программы можно сравнить с художником, который мазками своей кисти постепенно вырисовывает картину. Да, но эту картину можно в любой момент подкорректировать. Теперь немного поработаем руками и головой. Задействуем последний нетронутый нами элемент Delphi – редактор кода. Как можно догадываться, и как упоминалось в прошлом уроке, тут происходит ручной набор некого программного кода, именуемого языком программирования Object Pascal. Но не стоит сразу его пугаться. Это довольно несложный в изучении язык, тем более, что для его достижения, Delphi предоставляет прекрасные возможности. Минимум набора текста, дополнение кода, шаблоны кода, контекстный список параметров. Все это намного упрощает жизнь программисту. Для начала рассмотрим поподробнее такое понятие, как реакции на события. Реакция на события. Что же это такое? Не буду описывать всех тонкостей работы операционной системы Windows, расскажу лишь на пальцах. Допустим, вы запустили любую программу на выполнение. Сами того не зная, вы породили кучу событий, передаваемых этому приложению. Во первых до непосредственного создания любого окна в памяти, Windows посылает сообщение приложению: "окно сейчас будет создано". Или такие: "Окно сейчас будет активизировано", "Окно сейчас отобразится". Но на простом примере, непосредственно касающегося нас, скажу, когда вы нажимаете на любую кнопку, Windows посылает сообщение приложению: "По такой-то кнопке щелкнули". И если программист использовал это сообщение и написал реакцию на него, то программа выполнит ее. Напишем реакцию нажатия на кнопку Button3 или "Закрыть". Дважды щелкаем по этой кнопке. Delphi автоматически подготавливает редактор кода для минимизации ввода данных с клавиатуры, набирая за нас заголовок процедуры реакции нажатия на кнопку. Вот он: procedure TForm1.Button3Click(Sender: TObject); begin end; Указатель (курсор) находится между словом begin и end. Именно там и напишем команду программного закрытия окна, аналогично действию системной кнопки в заголовке окна. Поскольку это окно единственное и главное, то будет закрыта и вся программа. Если действие касается окна, а его имя Form1, то указываем ссылку на это окно. Имя, но не текст, который оно отображает. Имя – это свойство Name. Набираем вручную Form1. Теперь надо добраться до вложенных в него свойств и процедур. Для этого ставим точку. Через несколько секунд Delphi Выводит для нас дополнение кода. Это подобие списка доступных констант, переменных, функций для данного объекта (Form1). Набираем Close. Обратите внимание, дополнение кода помогает в наборе, и указывает на существующую функцию, выбрав в списке слово Close. Если этот случай касается сравнительно длинных названий, то выбрать необходимое можно в списке стрелками перемещения указателя или мышкой. Завершение ввода из списка дополнения кода осуществляется нажатием на кнопку Enter, точка, точка с запятой, пробел, открывающаяся скобка (в зависимости от ситуации). Мы поставим точку с запятой. Итак наше описание реакции на нажатия на кнопку "Закрыть" выглядит следующим образом: Form1.Close; Если нажать на эту кнопку, в момент работы программы конечно, это окно закроется. Напишем реакции на нажатия на другие кнопки Button1 и Button2. Рассмотрим еще один компонент Application. Это особый компонент. Его свойства недоступны для инспектора объектов потому, что он доступен только во время запуска приложения на выполнение и следовательно его нет на палитре компонентов. Application – это ссылка (или переменная) на ваше работающее приложение. Delphi автоматически создает данный компонент в связи с его обязательным присутствием. Первая наша кнопка "Свернуть" или Button1 должна осуществлять свертывание проекта в панель задач. Поэтому пишем реакцию на ее нажатие. Дважды щелкаем по ней. В редакторе кода пишем, используя знания написания команд предыдущего случая. Application.Minimize; Для кнопки "Развернуть" реакция нажатия выглядит как: Form1.Color:=clWhite; Примечание: обратите внимание на точку с запятой в конце строки. Ее присутствие обязательно и она означает окончание команды. Обратите внимание на знак присваивания := (двоеточие и знак равно). Этот знак изначает, что свойству или переменной слева присваивается значение, указанное справа. Что же произойдет при нажатии на эту кнопку. Окно программы окрасится в белый цвет. Для этого в свойство Color компонента программы Form1 заносится константа белого цвета. По желанию можно поэкспериментировать с другими цветами, поставив в форму еще несколько кнопок и задавая цвет при нажатия на них clBlack, clNavy и т.п. (перечень всех доступных цветов см. свойство Color в Object Inspector, и не забудьте для этого выбрать форму Form1 одинарным щелчком). Если нажать на кнопку "Свернуть", то программа свернется в панель задач. Теперь запустим программу на выполнение кнопкой F9. Теперь можно видеть не только оформленную внешне программу, то и любоваться ее некоторыми простыми действиями. Не забудьте сохранить проект на диске "Save All", как это было сказано в прошлом уроке, в отдельный каталог. Например "Урок2" или "Lesson2". Таким образом вы всегда будите знать где находится ваша программа, написанная с помощью того или иного урока. Часть урока для продвинутых программистов Речь в данном разделе пойдет о не совсем распространенном, но таком интересном, с точки зрения организации отчетов, компоненте F1Book (Formula One) из палитры компонентов ActiveX. Данный компонент является подобием табличной многостраничной таблицы Excel, с формулами, сеткой, границы и заливка и т.п. Кроме того от совместим с файловым форматом Excel 5. Файлы такого формата можно считывать с диска, обрабатывать, записывать на диск. При работе с компонентом F1Book, можно создавать произвольные отчеты произвольной формы программно, или вручную в момент отображения самой таблицы. Присутствует функции вывода на принтер, задания области печати, полей страницы, масштаба. Большая схожесть с программой MS Excel. Но существует и проблема. F1Book является VCI ActiveX объектом и требует регистрации в системе для его использования в пользовательских приложениях на другом компьютере. При инсталляции Delphi делает это автоматически. Устанавливает необходимые библиотеки в системный каталог, регистрирует в реестре. Если такую программу запустить на машине, где отсутствует Delphi, программа выдаст ошибку выполнения, наподобие "класс не зарегистрирован". Но остальная часть программы может и работать, несмотря на это, если эта таблица не находится в главном окне, и ее во время работы не открывать. Что говорит хэлп этого компонента по этому поводу: "Вы можете отправить следующие файлы со своим приложением" и приводится список файлов библиотек. Но про регистацию компонента в реестре Windows не сказано. Если вы являетесь специалистом и можете самостоятельно зарегистрировать эти библиотеки – пожалуйста. Получится, такая себе обрезанная версия без возможности печати и программного редактирования. Можно, конечно обратиться за технической помощью на торговый сайт или сделать заказ по почте или телефону. Это не серьезно. Вот как эта Formula регистрируется. Повторяю, это производится на компьютере, где Delphi не установлен. Необходимо скопировать в каталог %WINDOWS_DIR%\SYSTEM следующие файлы: VCF132.OCX MFCANS32.DLL OC30.DLL MSVCRT20.DLL Эти файлы находятся в аналогичном каталоге на компьютере, где есть Delphi. Далее запустить файл регистрации. Файл регистрации компонента F1Book можно скачать здесь. Учтите, что этот файл создан для регистрации библиотек в системном виндоувском каталоге C:\WINDOWS\SYSTEM. Если у вас он звучит по другому, следует подкорректировать этот файл вручную, исправив соответствующие строки. Идеальным случаем установки программы, с задействованным компонентом Formula One будет применение инсталляционной упаковочной программы типа Wise или InstallShield, куда можно упаковать все необходимые файлы программы и библиотеки компонента с последующей корректной регистрацией. А кто не пробовал экспериментировать с этим компонентом – попробуйте. Не пожалеете.
Часть урока для новичков | Здравствуйте. На этом занятии мы немного вспомним темы прошлых уроков и расширим наши знания. Итак, как вы уже знаете, язык который мы изучаем называется Object Pascal. И это значит, что вся работа сводится на управление этими самыми объектами. Каждый компонент, который вы помещаете на форму, имеет свое отражение в окне Инспектора Объектов (Object Inspector). Как вы помните, Object Inspector имеет две “странички” - “Properties” (Свойства) и “Events” (События). Создание программы в Delphi сводится к “нанесению” компонентов на форму (которая, кстати, также является компонентом) и настройке взаимодействия между ними путем: 1. изменения значения свойств этих компонентов. 2. написания адекватных реакций на события. Как Вы уже успели, наверное, заметить, свойство является важным атрибутом компонента. Для пользователя (программиста) свойство выглядит как простое поле какой-либо структуры, содержащее некоторое значение. Однако, в отличие от “просто” поля, любое изменение значения некоторого свойства любого компонента сразу же приводит к изменению визуального представления этого компонента. Свойства служат двум главным целям. Во-первых, они определяют внешний вид формы или компонента. А во-вторых, свойства определяет поведение формы или компонента. Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства. · Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name (из примера прошлого урока) представляют собой строки и определяют заголовок и имя компонента или формы. · Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False (истинно или ложно). Например свойство Enabled для кнопки Button будет означать, может ли пользователь или нет нажать на нее. Если установлено False, то кнопка становится серой, недоступной. Т.е. свойство кнопки Enabled может принитать только два значения и не более. · Вложенные свойства - это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “+” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как []. Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство. Delphi позволяет легко манипулировать свойствами компонента как в режиме проектирования, так и в режиме выполнения программы соответственно программно. В режиме проектирования манипулирование свойствами осуществляется с помощью Дизайнера Форм (Forms Designer или как говорилось выше проектировщик форм) или, как Вы уже видели, на страничке “Properties” Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и Width (ширину) кнопки, достаточно “зацепить” мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, просто подставив новые значения свойств Height и Width в окне Object Inspector. С другой стороны, в режиме выполнения пользователь (программист) имеет возможность не только манипулировать всеми свойствами, отображаемыми в Инспекторе Объектов, но и управлять более обширным их списком. В следующем разделе мы рассмотрим, как это делается. Управление свойствами визуальных компонентов в режиме выполнения Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. В режиме выполнения невозможно использовать Object Inspector. Хотя добраться до него возможно и возможно поменять его, но изменения вступят в силу только после перекомпиляции проекта. Компиляция - это процесс перевода вашей программы в машинный код. В данном случае это процесс создания исполняемого EXE файла. Однако, доступ к свойствам компонентов довольно легко получить программным путем. Все, что вы должны сделать для изменения какого-либо свойства - это написать простую строчку кода в редакторе кода аналогично следующей: Component.Width := 40; где Component - интересующий вас компонент. Например Button1. Название компонента указано в свойстве Name. Вышеприведенная строка устанавливает ширину (Width) компонента в значение 40 пикселей. Если свойство Width компонента еще не было равно 40 к моменту выполнения данной строки программы, Вы увидите, как компонент визуально изменит свою ширину. Естественно, что изменить просто так свойство нельзя. Его надо изменять только в ответ на какое-либо событие. Например на клик мышкой по кнопке. Для этого создается одноименная процедура обработки события. Рассмотрим пример. Разместим в проектировщике форм Form1 кнопку Button1. Напишем реакцию на событие нажатия по этой кнопке. Подробнее о реакциях на событие можно прочитать в уроке №2. Запускаем Delphi. В меню File выбираем New Application. Открывается новый проект. В проектировщике форм устанавливаем кнопку Button. Выделяем ее одинарным щелчком мыши. Здесь и далее для того, чтобы добраться до свойств необходимого объекта, нужно выделить его. Свойства выделенного немедленно отображаются в Object Inspector. Установим свойство Width для кнопки Button1 равное 200. Кнопка немедленно расширяется на заданную ширину. Теперь установим другую ширину для этой же кнопки, но уже программно. Переключаем Object Inspector на страницу Events (события). Мы видим полный перечень доступных во время выполнения событий для этой кнопки. Нас интересует реакция на событие нажатия On Click. Необходимо создать процедуру обработки этого нажатия, иначе это действие будет проигнорировано программой. Дважды щелкаем мышкой в поле, правее надписи On Click или нажимаем на Ctrl+Enter. Delphi автоматически создает заголовок процедуры обработки события. procedure TForm1.Button1Click(Sender: TObject); begin end; Курсор установлен между операторными скобками begin и end. Это означает, что весь текст программы, относящийся к реакции на данное событие должно быть размещено только между ними. Набираем строку: Button1.Width:=40; Запускаем программу на выполнение (F9). Смотрим на результат своей работы. Object Inspector является удобным способом выполнения в режиме проектирования того, что может быть осуществлено программным путем в режиме выполнения. Заданные свойства объектов считаются начальными и присутствуют на момент запуска программы. Более того, как уже было сказано выше, у компонента могут быть свойства, не отображаемые в окне Инспектора Объектов, которые доступны только в момент выполнения программы. Часть урока для продвинутых программистов В прошлом уроке мы рассматривали компонент F1Book, который применяется для организации работы, наподобие программы MSExcel. В этом уроке мы остановимся на непосредственной работе с упомянутой программой. Если у вас установлен Delphi 5, то его нововведением было появление закладки Servers на палитре компонентов. Но можно и без участия этих компонентов получать доступ к программам групп MS Office. Рассмотрим пример организации отчета в Excel. Пример можно скачать здесь. Для начала скажу, что если вы хотите создавать в Excel что-нибудь серьезное, то вам необходимо неплохо ореинтироваться на VBA, в число которых я не вхожу. Но важна сама идея. Создаем OLE объект: ExcelApplication := CreateOleObject ('Excel.Application'); где ExcelApplication - переменная типа Variant. Не забудьте объявить в разделе подключаемых модулей ComObj. Далее вся работа сводится к посылке сообщений к созданному приложению Excel. Данную методику можно применять как замену различным отчетам типа Report. Преимущества налицо.
Часть урока для новичков | Перед непосредственным написанием программ необходимо усвоить правилами работы над разрабатываемым проектом. Проект Delphi Как уже говорилось в первом уроке, любой проект имеет, по крайней мере, шесть файлов, связанных с ним. Три из них относятся к управлению проектом из среды программирования и напрямую программистом, как правило, не меняются. Вот этот перечень файлов: · Главный файл проекта, изначально называется PROJECT1.DPR. Если необходимо переименовать название проекта, нужно перезаписать этот файл, выбрав в меню File команду Save Project As… При задании имени следует придерживаться правил задания имен в Object Pascal. Имя не должно содержать пробелов (используйте в таком случае знак подчеркивания), должно начинаться с буквы (цифры допустимы, но со второй позиции), не должно содержать других символов, кроме букв и цифр. Под каким именем вы сохраняете проект, под таким именем и будет создаваться исполняемый EXE файл, который вы всегда сможете самостоятельно переименовать. · Модуль программы, который автоматически появляется в начале работы Unit1. Файл называется UNIT1.PAS по умолчанию, но его можно назвать любым другим именем, вроде MAIN.PAS. Это делается аналогично переименованию названия проекта. Необходимо выбрать в меню File команду Save As… Сохраняется активный модуль в редакторе кода. · Файл главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения информации о внешнем виде формы (окна разрабатываемого приложения). При переименовании названия модуля автоматически меняет свое название. · Файл PROJECT1.RES изначально содержит иконку для проекта. Создается автоматически. Имеет одноименное название с названием проекта. · Файл PROJECT1.DSK содержит информацию о состоянии рабочего пространства. Состояние окон во время разработки приложения. · Исполняемый EXE файл, который создается в процессе компиляции проекта. Разумеется, если сохранить проект под другим именем, то изменят название и файлы с расширением RES и DSK. После компиляции программы получаются файлы с расширениями: DCU - скомпилированные модули PAS для последующей быстрой компиляции некоторые файлы не перезаписываются EXE - исполняемый файл ~PA, ~DP - backup файлы редактора. Автоматически создаются и содержат информацию, перед последним сохранением. Коротко про пункты главного меню Delphi Пункт меню “File” Если нужно сохранить проект, то Вы выбираете пункт главного меню “File” (с помощью мышки или по клавише Alt+F). У вас, в зависимости от установленной версии, он может выглядеть по другому, но это не меняет картины в целом. Пункт меню “File” выглядит следующим образом: Как вы можете видеть, здесь есть шесть секций, разбиваемых по их функциональному назначению. · Первая секция дает возможность управления проектом в целом. Создать новый… (проект, форму, модуль, отчет и т.д.). Создать новый проект. Создать новую форму (окно). · Вторая секция позволяет открывать с диска файлы проекта. · Третья позволяет сохранять открытые файлы на диске. Здесь можно закрыть активный файл в редакторе кода или закрыть весь проект. · Четвертая позволяет подключать в текущий модуль другие в открытом проекте. · Пятая управляет печатью. · Шестая секция - выход из Delphi. Каждая строка пункта меню “File”, как и другого пункта, объяснена в справке. Выберите меню “File”, подведите под интересующий вас пункт и нажмите F1. Большинство из пунктов первой секции очевидны. “New Application” начинает новый проект, “Open Project” открывает существующий проект и т.д. Вложенный список “Reopen” позволяет открыть файл или проект, который недавно открывался. При создании нового модуля Delphi дает ему имя по-умолчанию. Вы можете изменить это имя на что-нибудь более предпочтительное, чтобы название подходило к функциональным принадлежностям данного модуля (например, MAIN.PAS) с помощью пункта для первого сохранения “Save“ или для последующего изменения названия “Save As…“. “Save File” сохраняет только редактируемый файл, но не весь проект. Для сохранения всех файлов проекта пользуйтесь "Save All". Вообще всегда удобнее пользоваться пунктом меню сохранить все, чем сохранять файлы по отдельности, тем более, что сохраняются только измененные. “Close” закрывает файл из окна редактора. Если файл был изменен произойдет запрос сохранений перед закрытием. “Close All” закрывает все открытые файлы проекта. Пункт меню “Edit” “Edit” содержит команды “Undo” и “Redo”, которые могут быть очень полезны при работе в редакторе для устранения последствий при неправильных действиях, например, если случайно удален нужный фрагмент текста или удален компонент из проектировшика форм. Команды “Cut”, “Copy”, “Paste” и “Delete” - как во всех остальных приложениях Windows, но их можно применять не только к тексту, но и к визуальным компонентам. Например, если необходимо размножить необходимый компонент на форме. Принцип действия первой и второй секции человеку, работающему в Windows, думаю ясен. Третья секция предназначена для работы с редактором формы. Не буду полность описывать ее содержание. Расскажу только о некоторых. “Bring to Front” - установить выбранный компонент на уровень выше; “Send to Back” - компонент на уровень ниже; “Align...” - выравнивание компонентов, совместное позиционирование; “Size” - точные размеры компонента; “Tab Order” - порядок перехода по элементам формы с помощью кнопки Tab. Сохранение проекта Как известно, чтобы в последствии открывать свой проект для дальнейшего корректирования и управления необходимо его сохранить на диске. Первый шаг - создать поддиректорию для программы. Лучше всего создать директорию, где будут храниться все ваши программы и в ней - создать поддиректорию для данной конкретной программы. Например, вы можете создать директорию LESSONS и внутри нее директории, связанные с тем или иным уроком LES4, которые содержали бы программы, над которыми мы работали. После создания поддиректории для хранения вашей программы желательно выбрать пункт меню “File” “Save All”. Сохранить нужно будет два файла. Первый - модуль (unit), над которым Вы работали, второй - главный файл проекта. Здесь и далее сколько окон (форм) в вашем проекте, столько и модулей. Открытие проекта Для открытия проекта необходимо выбрать пункт меню файл "Open Project" и выбрать название интересующего вас проекта DPR. При этом открываются как сам проект, так и становятся доступными все привязанные к нему файлы. Если вы хотите открыть для редактирования отдельный модуль, или модуль формы, необходимо выбрать пункт "Open" и выбрать файл PAS. В этом режиме будет доступно для редактирования только форма и модуль. Чтобы запустить это окно на выполнение сначала открывайте проект. Часть урока для продвинутых программистов Запуск других приложений из вашего Существует две наиболее часто применяемых функций. WinExec и ShellExecute. Функция WinExec WinExec, оставлена для совместимости с ранними версиями Windows, но я рекомендую для обычного запуска программы с командной строкой использовать эту. У нее мало параметров запуска. Используемый модуль – Windows. Описание: WinExec (FileName: PChar; CmdShow: Cardinal) : Cardinal; где: FileName – путь, имя запускаемого приложения, параметры командной строки. Все указывается в одной строке; CmdShow – стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске. Параметры отображения окна CmdShow: SW_HIDE Запускаемое приложение делается невидимым SW_MAXIMIZE Расширяет окно на весь экран SW_MINIMIZE Запускаемое приложение минимизируется. После запуска активизируется окно высшего уровня, т.е. окно, откуда было запущено это приложение SW_RESTORE Делает окно таким, каким оно было запущено в последний раз SW_SHOW Отображает окно в своем текущем размере и позиции Для не-Windows приложений определяет состояние окна файл PIF, если таковой имеется в наличии. Если необходимо закрывать окно после завершения работы такого приложения необходимо создать PIF ярлык к нему в том же каталоге с таким же названием и поставить галочку "Закрывать окно по завершению сеанса работы". Все дополнительные параметры запуска устанавливаются там же. Возвращаемые значения функции WinExec: 31 нормальный запуск 0 системе не хватает памяти или ресурсов ERROR_BAD_FORMAT EXE файл поврежден или имеет неверный формат (Windows на такой файл говорит, что он не является приложением Win32) ERROR_FILE_NOT_FOUND файл не найден ERROR_PATH_NOT_FOUND путь к файлу задан неверно Если имя выполняемого файла в параметре FileName не содержит пути директории, Windows производит поиск выполняемого файла в такой последовательности: 1. Каталог из которого приложение было запущено. Это рабочий каталог 2. Системный каталог Windows (обычно C:\WINDOWS\SYSTEM). 3. Каталог Windows. 4. Директории, указанные в переменной операционной среды в среде PATH. Узнать о каталогах этой переменной можно, введя PATH в командной строке сеанса MS-DOS. Пример использования функции WinExec в программе: WinExec ('command.com', SW_SHOW); // запускает сеанс MS-DOS Функция ShellExecute Функция ShellExecute не только запускает программы, а открывает, редактирует или печатает файл, с учетом зарегестрированного типа, а также открывает указанную папку проводником. Возвращает Handle ссылку на открытое окно. Используемый модуль ShellAPI. Его нужно не забыть указать в разделе Uses. Описание: ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar; Parametrs: PChar; Directory: PChar; CmdShow: Integer): HINST; где: hWnd – Handle родительского окна, в который будут передаваться сообщения запускаемого приложения. Можно указывать Handle-ссылку окна вашего приложения. Operation – производимая операция. Open – открыть, print – напечатать, explore – открыть папку. По умолчанию open, если указать nil. FileName – имя файла или документа, интернет ссылка, e-mail адрес. Parametrs – параметры, передаваемые приложению в командной строке. Directory – каталог по умолчанию. CmdShow – стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске. Подробно рассказано выше. Вместо параметров Operation, Parametrs и Directory можно ставить nil. Они являются не обязательными параметрами для запуска. В случае успешного запуска возвращает Handle окна, в случае неудачи возвращает код ошибки меньше или равное 32. Список возможных ошибок можно прочитать в справке по этой команде. Пример использования команды ShellExecute в программе: ShellExecute (Form1.Handle, nil, 'http://programming.dax.ru', nil, nil, SW_RESTORE); //запуск нашей странички ShellExecute (Form1.Handle, nil, PChar (Application.ExeName), nil, nil, SW_RESTORE); //запуск второй копии этой программы ShellExecute (Form1.Handle, nil, 'iexplore', 'http://programming.dax.ru', nil, SW_RESTORE); //запуск в отдельном окне ShellExecute (Form1.Handle, nil, 'mailto:semen@krovatka.net?subject=delphi', nil, nil, SW_RESTORE); //написать мне письмо ShellExecute (Form1.Handle, nil, 'c:\1.doc', nil, nil, SW_RESTORE); //открыть документ
Часть урока для новичков | Приложения MDI и приложения SDI. Прежде чем устанавливать вид и свойства вашего приложения надо подумать о том, какой вид приложения вы желаете создать. Это во многом зависит от его функционального назначения. Можно выбирать между так называемыми MDI- или SDI-приложениями. MDI – сокращенно от Multiple Document Interface (интерфейс для одновременной работы со многими документами), а SDI – от Single Document Interface (интерфейс для работы с одним документом). В MDI приложениях два или более окон могут быть активны одновременно. В SDI-приложениях это невозможно. Здесь в каждый момент времени может быть активным только одно окно. MDI-приложения являются удобным средством для одновременного выведения на экран текста или данных, которые хранятся в различных файлах. Такую структуру построения окон можно использовать для редактирования текстов, открывая и выводя на экран одновременно несколько различных документов. С помощь этих приложений можно также производить табличные вычисления, обрабатывая несколько таблиц одновременно, перенося или сравнивая данные из одной в другую. Пример такой работы над файлами – программа MS Word. Здесь файлы текстового и графического формата открываются в отдельных окнах, находящихся внутри главного окна программы. Различные открываемые документы в окнах имеют общее рабочее пространство, в пределах которого они отображаются, называемое родительским окном. Всегда в MDI-приложении родительское окно является главной формой приложения. Все внутренние формы, называемые дочерними окнами отображаются в пределах рабочего пространства родительского окна и не могут быть помещены за ее пределы. Даже при свертывании. При максимизации таких окон, они занимают все рабочее пространство родительского окна, оставаясь внутри его. Родительское окно может быть в MDI-приложениях только одно, а дочерних окон может быть теоретически бесконечно. Большинство MDI-приложений имеют меню "Window" ("Окно") со следующими пунктами: Cascade, Arrange Icons, Tile Horizontal, Tile Vertical. С их помощью пользователь может управлять дочерними окнами приложения. Обычно нижняя часть меню отделена и представляет список всех открытых окон. Это свойство весьма удобно для быстрого перехода к тому или иному редактируемому файлу. Модальные окна. Все SDI-окна можно разделить по свойствам доступа друг к другу как модальные и немодальные. Они определяют, может пользователь или нет переключаться на другие окна. Когда модальное окно открыто, все другие открытые окна становятся недоступными. Пример можно увидеть практически из любой программы, вызвав пункт меню "About" ("О программе"). Отображаемое окно в приложении, как правило, не дает переключится на другое, пока не будет закрыто. Такое свойство иногда бывает очень полезным. Например, когда нужно чтобы пользователь ввел пароль, а затем получил доступ к определенному окну с данными, или окно фильтра данных, указав условия отбора, получает доступ к результату. Итак, модальными или немодальными могут быть только SDI-окна. С сегодняшнего урока мы с вами начинаем разрабатывать довольно сложный пример простого многооконного текстового редактора. Пример MDI-приложения. 1. Запускаем Delphi. В меню "File" выбираем пункт "New Application". 2. Переименовываем свойство имени формы Name из Form1 в MainForm. 3. Устанавливаем свойство в инспекторе объектов FormStyle в fsMDIForm. Его можно выбрать из ниспадающего списка доступных свойств. Свойство означает, что данное окно будет родительским в MDI-приложении. 4. В палитре компонентов выбираем MainMenu. Это второй компонент слева на вкладке Standart. Помещаем его на проектировщик формы Form1. Дважды щелкаем по нему. Появляется конструктор меню окна. Здесь и далее для того, чтобы вызвать конструктор для размещенного в форме компонента главного меню (MainMenu), необходимо или дважды кликнуть по нему мышкой или дважды кликнуть в Object Inspector по свойству Items. Далее, пользуясь свойством Caption задайте меню такой вид, как на рисунке. Примечание: выбрать изменяемый пункт можно мышкой, для изменения названия выберите в инспекторе объектов свойство Caption, для отделения секций меню линией используйте знак тире в свойстве Caption для нужного пункта меню. Создание меню очень простое. Вы сразу видите результат изменения, добавления или удаления пунктов в редакторе формы. Вы всегда можете пополнить пункты меню, используя дополнения, выделенные пунктирной рамкой. Всегда можно вставить или удалить пункт меню в нужное место. Для этого воспользуйтесь правой клавишей мыши. Выбрать интересующее действие можно из выпадающего меню. Итак, содержание главного меню: Файл Правка Окна Помощь Новый Вырезать Упорядочить О программе Открыть Копировать Сохранить Вставить Сохранить как… Закрыть - Выход 5. Выбираем пункт меню "Окна" и переименовываем его имя (идентификатор) Name в инспекторе объектов в WindowMenu. 6. Выбираем мышкой форму MainForm. В Object Inspector в свойстве WindowMenu устанавливаем их ниспадающего списка пункт меню WindowMenu. Теперь во время работы приложения все дочерние окна будут списком отображаться в меню "Окна". 7. Поскольку дочерних окон в этом приложении будет много и по внешнему виду они будут подобные, то нет смысла проектировать каждое окно отдельно. Спроектируем одно. Для помещения в проект новой формы выбираем из меню "File" пункт "New Form". 8. Устанавливаем размеры окна Form2 меньшими главного родительского окна. 9. Переименовываем свойство Name для этого окна из Form2 в ChildForm. 10. Устанавливаем свойство дочернего окна для MDI-приложения FormStyle в fsMDIChild. 11. Выбираем из палитры компонентов Memo и устанавливаем его в дочернюю форму ChildForm. 12. Меняем свойство Align для этого компонента на alClient. Он немедленно расширяется на все доступное пространство окна. 13. Далее будем писать событие выбора пункта меню "Новый". При нажатии на него должно появляться дочернее окно. Поступаем следующим образом. Поскольку дочерних окон будет множество, то мы программа должна их автоматически при необходимости создавать. По умолчанию Delphi устанавливает автоматическое создание окна во время запуска приложения. Это избавляет программиста от написания некоторых команд. В данном случае мы все сделаем сами. Выбираем из меню "Project" пункт "Options…". На вкладке Forms снимаем установку "Auto-create forms" для окна ChildForm. Для этого выбираем его и перегоняем одинарной стрелкой в сторону "Available forms". Нажимаем кнопку OK. 14. Сохраняем проект на диске. Для этого проводником Windows создаем отдельную папку для хранения этого примера. В меню "File" выбираем пункт "Save All". Дальше появляются диалоги сохранения модулей окон и файл проекта. Модуль Unit1 родительского окна можно назвать, сохранив его под именем MainUnit. Модуль Unit2 дочернего окна приложения. можно сохранить под именем ChildUnit. Весь проект можно сохранить под именем MyEdit. 15. Теперь напишем в редакторе кода процедуру создания дочернего окна. Выбираем окно MainForm и дважды щелкаем по компоненту MainMenu1. Выбираем пункт меню "Новый". В Object Inspector переходим на вкладку событий Events. Дважды щелкаем по полю, правее OnClick. Или нажимаем Ctrl+Enter. Появляется готовый заголовок процедуры нажатия на пункт меню "Новый". Между begin и end пишем следующую строку: TChildForm.Create(Self); Поскольку в этом окне создается другое, то в переименованный модуль MainUnit необходимо подключить ChildUnit. Для этого выбираем из меню "File" пункт "Use Unit…" и указываем модуль ChildUnit. Нажимаем OK. Все, запускаем программу на выполнение. Во время работы обратите внимание на список появившихся окон в меню "Окна", по которым удобно переключаться на необходимое окно. В следующих уроках мы подробнее остановимся на написании этого примера. Если в этом уроке у вас что-то не получается, то пример на данном этапе разработки можно скачать здесь (2 KB). Если вы в последствии открываете свой или скаченный проект, не забывайте, что нужно открывать DPR файл. Часть урока для продвинутых программистов Перетаскивание файлов в приложение Иногда очень полезно избавить пользователя от лишних операций при открытии файла. Он должен нажать на кнопку "Открыть", затем найти интересующий каталог, выбрать файл. Проще перетащить мышкой файл сразу в окно приложения. Рассмотрим пример перетаскивания Drag & Drop в окно произвольного текстового файла, который сразу же открывается в компоненте Memo1. Простой пример текстового редактора, который рассматривается ниже, можно скачать здесь (3KB). Для начала в разделе Uses необходимо подключить модуль ShellAPI. В private области окна нужно вставить следующую строку: procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; //получение сообщений о переносе файла в окно приложения Процедура обработки этого сообщения будет выглядеть следующим образом: procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); var CFileName: array[0..MAX_PATH] of Char; // переменная, хранящая имя файла begin try If DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH)>0 then // получение пути файла begin Form1.Caption:=CFileName; // имя файла в заголовок окна Memo1.Lines.LoadFromFile(CFileName); // открываем файл Msg.Result := 0; end; finally DragFinish(Msg.Drop); // отпустить файл end; end; Для того, чтобы форма знала, что может принимать такие файлы, необходимо в процедуре создания окна указать: procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end;
В нескольких уроках будут рассмотрены основные страницы с компонентами, содержащиеся в палитре компонентов главного окна Delphi. Будут рассмотрены описания некоторых свойств, место их применения. На этом занятии будут рассмотрены страницы Standart, Additional и Win32. | Не обязательно заучивать, запоминать нужные или ненужные на данном этапе обучения те или иные компоненты. Эти данные вы можете использовать в дальнейшем в справочных целях. Поскольку у меня установлена 4 версия Delphi, то объяснять буду именно для нее. В других версиях имеются некоторые различия, но это не меняет всей картины в целом. Первой кнопкой на каждой вкладке палитры компонентов всегда указатель в виде курсора . Это не компонент, эта кнопка позволяет быстро отказаться от уже выбранного компонента. Если вам нужно в форму установить несколько одинакавых компонента, то выбирайте его из палитры при нажатой клавишей Shift. В этом случае после перенесения компонента в окно, кнопка на палитре продолжает оставаться нажатой. Чтобы выйти из этого режима используйте вышейказанную кнопку отмены. Страница Standart Компоненты на этой странице представляют стандартные Windows-элементы (кнопки, списки, меню и т.п.) TMainMenu позволяет вам поместить главное меню в окно. Такое меню присутствует в большинство программах. При помещении TMainMenu на проектируемую форму, оно выглядит в виде значка. Для того, чтобы добавить, изменить, удалить пункты меню используйте свойство этого компонента Items в Object Inspector. При этом вызывается окно построителя пунктов меню. TPopupMenu позволяет создавать всплывающее меню для многих других компонентов. Это меню появляется при нажатии на правую кнопку мышки на том компоненте, к которому оно привязано. Изменить пункты меню можно аналогично главному меню (свойство Items). Чтобы к конкретному компоненту привязать это всплывающее меню, его необходимо указать в свойстве PopupMenu этого компонента. TCaption это обычный текст. Его можно редактировать как во время разработки, так и во время работы приложения. Текст можно изменить в свойстве Caption, шрифт меняется в свойстве Font. TEdit предназначен для ввода пользователем некоторых данных. Обычно им пользуются для ввода цифровых или текстовых данных, пароля (свойство PasswordChar установите маску отображаемых символов, обычно это звездочка). Доступ к тексту - свойство Text. Ограничение количества введенных символов - свойство MaxLength (0 – число символов не ограничено). TMemo это многострочный компонент для ввода/вывода данных. Может содержать относительно большой текст. Пример его использования вы можете увидеть в стандартном блокноте Windows. Для доступа к тексту используйте свойство Lines. Оно представляет набор строк Strings. Свойство WordWrap указывает нужно или нет производить автоматический перенос текста на новую строку, если она выходит за границы компонента. Этот компонент не работает с текстом формата RTF. Для этого применяйте компонент TRichEdit на вкладке Win32. TButton это обычная кнопка в вашем приложении. Текст на кнопке задается свойством Caption. TCheckBox представляет собой текстовую строку с возможностью ее установки в три положения. Свойство Checked true (истинно, установлена галочка), false (ложно, галочка снята). Возможно ее выделить серым в свойстве State в cbGrayed. Текст устанавливается в свойстве Caption. Такие компоненты чаще всего устанавлявают в окна настройки параметров программы, окна поиска. TRadioButton применяется в списках свойств, где нужно выбрать только одну опцию из нескольких. Текст - свойство Caption, состояние - свойство Checked. Если компонентов TRadioButton на управляющей панели (TPanel, TGroupBox, TForm) несколько, то если пользователь установит флаг на одном, то на остальных он автоматически снимается. Это принцип группировки. Если у вас несколько таких групп, которые используют разные тематики в работе, то устанавливайте их в отдельные панели. TListBox предназначен для отображения списка строк. От компонента TMemo он отличается только тем, что невозможно непосредственно редактировать текст, пользователь может только выбрать одну или несколько строк в этом списке. Доступ к строкам Lines. TComboBox напоминает компонент TListBox, но только нужный пункт можно выбрать из ниспадающего списка. Строки хранятся в свойстве Lines. Установленный пункт из списка - свойство ItemIndex. Пример его использования - список шрифтов в текстовых редакторах. TScrollBar это полоса прокрутки. Используется для прокручивания невидимой части в компоненте. TGroupBox используется для оформления внешнего вида приложения и для группировки установленных в форму компонентов по смыслу. Все компоненты в форме можно разделить по функциональным назначениям и разместить в таких компонентах. Удобен при назначении порядка перехода по компонентам с помощью кнопки Tab. Заголовок этого компонента изменяется свойством Caption. TRadioGroup по внешнему виду похож на компонент TGroupBox. Его отличие лиш в том, что в нем располагаются список компонентов TRadioButton. Список содержится в свойстве Items. Очень удобно использовать этот компонент т.к. он автоматически позиционирует список переключателей после изменения из списка. Свойство ItemIndex показывает какой переключатель сейчас установлен (-1 нет, 0 первый, 1 второй ...). TPanel по функциональному назначению похож на компонент TGroupBox. TActionList может содержать список как стандартных действий компонентов (вырезать, вставить, упорядочить значки для MDI-окон), так и есть возможность создать собственные действия. Страница Additional Компоненты на этой странице предназначены для красочного оформления приложения, усовершенствованные компоненты из предыдущей страницы. TBitBtn это таже кнопка TButton, но на ней можно разместить рисунок. Картинка загружается в кнопку с помощью свойства Glyph. Этой кнопке можно задать стандартный вид, изменив свойство Kind. Если вы используете а приложении кнопку без рисунка, то используйте компонент TButton. TSpeedButton является частью компонента TSpeedBar. Это кнопка, на которой обычно располагается только картинка без текста. Границы этой кнопки можно спрятать, изменив свойство Flat на true. В таком случае этот компонент будет выделен только в том случае, когда указатель мыши находится над ним. Пример - кнопки на палитре компонентов и кнопки быстрого запуска команд меню. TMaskEdit похож на компонент TEdit, но позволяет вводить данные определенного формата. Например телефон 555-55-55. Этот формат указывается в свойстве EditMask. TStringGrid представляет собой таблицу, в которую могут заносится текстовые данные. Доступ к данных возможен только во время работы приложения через свойство Cell. TDrawGrid таблица с занесением данных любого формата (текста, рисунков и т.п.). Доступ к ячейкам через свойство CellRect только во время работы приложения. TImage может содержать рисунок большинства широко распространенных форматов. Рисунок устанавливается в свойстве Picture. Установленный рисунок можно центрировать (Center), вписать в рамки компонента увеличив или уменьшив (Stretch), сделать прозрачным относительно нижней левой точки рисунка (Transparent). TShape позволяет программисту размещать в форму окружность, квадрат, линию, загружать изображения. Этот компонент можно применять в простейших графических редакторах. TBevel применяется только для украшения внешнего вида окон. Может принимать вид приподнятых (опущенных) панелей из свойства Style. Может стать линией, квадратом, пунктирным квадратом с помощью свойства Shape. TScrollBox полезен, когда вся видимая часть размещенных в него компонентов недоступна для пользователя. В таком случае в этом компоненте автоматически появляются бегунки прокрутки. TCheckListBox по внешнему виду похож на компонент TListBox, но в его строках Items есть переключатели, аналогичные TCheckBox. Доступ к которым можно получить только во время работы приложения через свойство Checked[N], где N - индекс строки. Если установлено true, значит галочка стоит, если false - наоборот. TSplitter позволяет изменять границы компонентов, к которым он прилегает. Может быть как вертикальным (Свойство Align в alLeft или alRight), так и горизонтальным (Align alTop или alBottom). TStaticText функционирует подобно TLabel. Применяется в основном для текстов в диалоговых окнах, для вывода данных. Кроме того его текст можно отображать в рамке через свойство BorderStyle. TControlBar применяется для современного оформления меню, кнопок быстрого доступа. В нем панели можно передвигать мышкой. Пример вы можете увидеть в главном окне Delphi. Там главное меню, кнопки, панель палитры компонентов расположены на компоненте TControlBar. TChart позволяет красиво, в графической форме представить некоторые табличные данные. Данные прямо из этого компонента можно печатать, выводить в виде графики в файл. Страница Win32 Компоненты на странице Win32 обеспечивают доступ к 32-битным элементам Windows (Windows95/NT). TTabControl это страничный компонент подобный картотеке или записной книжке. Этот компонент обеспечивает выбор нужной страницы из массива имеющихся. Список страниц находится в свойстве Tabs. TPageControl это еще один страничный компонент. В отличие от предыдущего все размещаемые на нем страницы есть отдельными компонентами. Для создания страниц на этом компоненте щелкайте по нему правой кнопкой мышки. Все визуальные компоненты (видимые во время работы приложения), помещенные на определенную страницу становятся недоступными при перелистывании на другую. Пример можно увидеть в стандартном поиске файлов Windows. TImageList может содержать в себе список хранящихся вместе изображений. Доступ к ним осуществляется через индекс. Для изменения списка хранимых изображений дважды щелкайте по этому компоненту. Все изображения в нем должны иметь одинаковый размер. Используйте свойства Height и Width для задания ширины и высоты изображения. Эти изображения в последствии через индекс можно размещать на TMainMenu, TPopupMenu, TPageControl, TToolBar, TTreeView, TListView и т.д. Необходимо помнить, что все загружаемые в этот компонент изображения, как и в любом другом компоненте с изображением, линкуются в исполняемый EXE файл. TRichEdit в отличие от компонента TMemo может содержать форматированный текст RTF. Это текст с разными шрифтами, цветом. Пример вы увидите в текстовых редакторах MSWord или WordPad. TTrackBar представляет собой многопозиционный бегунок. Его полезно использовать для задания данных из допустимого диапазона. Минимальный и максимальный диапазон данный устанавливается в свойстве Min и Max, а текущую позицию можно узнать или установить с помощью свойства Position. Этот бегунок можно увидеть в регуляторе громкости. TProgressBar это простой индикатор процесса работы. Его можно увидеть в момент копирования файлов, форматирования диска. Минимальные и максимальные значения хранятся в свойстве Min и Max. Текущая позиция Position. Величина шага перемещения указателя - свойство Step. Само перемещение указателя прогресса осуществляется командой StepIt. Например, необходимо скопировать семь файлов. Изначально программно или на этапе проектировки задаем свойства Min=0, Max=7, Step=1, а после копирования каждого из файлов применяем StepIt. TUpDown размещается с целью задания величин с последующим пошаговым изменением. Сама величина не отображается. Свойства схожи с компонентом TTrackBar. В свойстве Increment задается величина шага изменения значения. Если необходимо отображать результат тут же, то воспользуйтесь компонентом TSpinEdit на странице Samples. THotKey позволяет задавать или отображать на экран комбинацию клавиш. Комбинация содержится в свойстве HotKey. TAnimate представляет собой замечательный компонент оживления ваших приложений. С его помощью вы можете вставить анимированный видеофрагмент в вашу форму, прокрутить стандартную Windows анимацию. Файл загружается с указанного свойства FileName, а стандартную Windows анимацию устанавливают в свойстве CommonAVI. Для начала проигрывания не забудьте установить Active в true. TDateTimePicker простой календарь и часы. Он может показывать время или календарь в зависимости от свойства Kind. Время и дату можно задавать прямо с клавиатуры, а дату можно еще указать из ниспадаюшего календарика. TMonthCalendar это обычный календарь для выбора даты. Попробуйте его растянуть - можно даже увидеть весь год. Свойство установленной даты - Date. TTreeView может показывать древовидную структуру данных. Например каталоги. Пользуйтесь свойством Items для изменения дерева. В дереве могут присутствовать изображения. Тогда к нему нужно привязать массив изображений TImageList и указывать для каждого элемента дерева индекс рисунка. TListView широко известный компонент, применяемый в проводнике Windows. Может содержать большие, мелкие значки, список. Свойство Items содержит список выводимых элементов. THeaderControl используйте его, чтобы отобразить заголовок колонок текста или чисел. TStatusBar является нижней панелью, которая отображает информацию, как работает приложение. Практически повсюду применяется. В текстовых редакторах на такой панели можно узнать о состоянии кнопок Caps, Num, Scroll, узнать изменен или нет документ, на какой странице находится указатель и т.п. TToolBar это хранилище кнопок, которые обычно размещаются в верхней части окна. Эта панель есть практически в любом приложении. Обычно на ней располагаются кнопки для быстрого доступа к пунктам главного меню. TCoolBar представляет собой некий контейнер для компонентов. Там их легко позиционировать, перемещать. Такой элемент расположен в Internet Explorer. TPageScroller cодержит в себе другие объекты, которые могут выходить за видимые пределы. Для этого пользователь использует стрелки и перемещает компонент в нужную сторону, тем самым освобождая невидимую часть. Пример вы можете увидеть на палитре компонентов на тех страницах, где видны не все значки компонентов.
Продолжаем рассматривать элементы в палитре компонентов. На этом занятии будут рассмотрены страницы System, Dialogs, Samples. | Страница System На этой странице находится набор компонентов для доступа к системным ресурсам, таким как OLE, DDE. TTimer создает событие OnTimer, интервал которых задан с свойстве Interval. Этот интервал задается в миллисекундах и работает относительно точно. Тем не менее не рекомендуется его применение при точных вычислениях. С помощью свойства Enabled счетчик можно запустить (true) или остановить (false). TPaintBox компонент для рисования. Доступ к графике через Canvas. TMediaPlayer работает с изображением и звуком. Использует стандартный драйвер мультимедиа. Имеет вид готовой к работе панели управления устройством управления (кнопки Play, Stop и т.п.). TOLEContainer это компонент, содержащий OLE-объекты. Привязанные объекты во время проектировки приложения линкуются в исполняемый EXE файл. TDDEClientConv представляет собой связь с DDE сервером. Посылает данные или макрокоманды на сервер DDE после того, как связь была установлена. Это стандартные методы обмена данными между приложениями. Пример вы можете найти в стандартной поставке примеров Delphi. TDDEClientItem определяет обмен данными между DDE приложениями. Он содержит в себе данные, которые передаются. Используйте этот компонент вместе с TDDEClientConv, чтобы позволить приложению действовать как клиент DDE, и иметь возможность передать данные. TDDEServerConv представляет собой связь с DDE клиентом. TDDEServerItem представляет собой обмениваемые данные в DDE приложении. Страница Dialogs На странице Dialogs размещаются стандартные диалоговые элементы Windows, как то окна открытия, сохранения файлов, окна выбора шрифта, принтера и т.п. Эти компоненты пользуются стандартным системным интерфейсом. TOpenDialog это диалог открытия файла. Этот и все другие диалоги активируются через функцию Execute. Если возвращаемое значение равно true, значит пользователь выбрал файл (принтер, шрифт и т.п.) и нажал на кнопку Ok в этом диалоговом окне. Тогда имя открываемого файла содержится в свойстве FileName. Обычно процедура вызова подобного диалогового окна выглядит следующим образом: if OpenDialog.Execute then Memo.Lines.LoadFromFile(OpenDialog.FileName);Здесь показан пример загрузки текстового файла в компонент Memo (страница Standart), выбранного с помощью диалога открытия файла OpenDialog.Текст заголовка диалога в свойстве Title. Фильтр, который будет отфильтровывать файлы по расширению указывается в свойстве Filter. Его целесообразно установить сразу во время разработки проекта, поскольку при этом открывается удобная для занесения значений таблица.Свойство InitialDir указывает программе каталог по умолчанию, который будет открыт в диалоговом окне. Если это свойство не задано, то берется каталог, из которого запущена программа. TSaveDialog - диалог сохранения файла. Свойства и работа подобны диалогу TOpenDialog. TOpenPictureDialog - диалог открытия рисунка. В отличие от TOpenDialog имеет внутренний предварительный просмотр рисунка в открываемом файле. Кроме того уже имеет некоторые заданные свойства фильтра Filter, который содержит все распознаваемые в этом диалоге форматы графики. TSavePictureDialog - диалог сохранения рисунка. TFontDialog - вызывает стандартный диалог выбора шрифта. Свойство Font содержит как изначальный (выбранный по умолчанию) шрифт, так и измененный, после вызова диалога. FontDialog1.Font := Edit1.Font;if FontDialog.Execute then Edit.Font := FontDialog.Font;Здесь показан пример изменения шрифта в компоненте Edit. Причем во время вызова диалога FontDialog в нем изначально будет установлен шрифт, заданный в компоненте Edit.Свойство Device указывает типы отображаемых шрифтов. fdBoth - все, fdPrinter - принтерные, fdScreen - экранные.MaxFontSize MinFomtSize устанавливает границы минимального и максимального размера шрифта. Цифра 0 - размер ограничивается только возможностями данного шрифта. TColorDialog - диалог выбора цвета. Цвет по умолчанию и измененное хранится в свойстве Color. TPrintDialog - диалог выбора принтера, выбора количества копий, страниц, свойства печати и т.п. TPrinterSetupDialog - диалог выбора принтера. TFindDialog - диалог поиска фрагмента текста в документе. TReplaceDialog - диалог замены текста в документе. Страница Samples TGauge это графически улучшенный ProgressBar. Содержит в себе надпись процента выполнения действия. В свойствах MinValue, MaxValue, Progress указаны соответственно минимальное, максимальное и текущее значение. Свойство BackColor содержит цвет фона, а ForeColor - цвет заполнения. Свойством Kind можно задать разный тип отображения индикатора. TSpinEdit по своему функциональному назначению схож с компонентом TUpDown (страница Win32). Значение Value видно сразу в момент его изменения в индикаторе. Кроме того значение можно корректировать с помощью цифр. TDirectoryOutline показывает древовидный список каталогов. TCalendar - календарь. Свойство Year, Month, Day (год, месяц, день) разбиты на три отдельные части. |