От Delphi 4 к Delphi 5 часть 12

Обзор GSM телефона Alcatel One Touch View
Палитра компонентов.
Страница DATA CONTROLS.
Компоненты страницы Data Controls представляют собой модификацию стандартных интерфейсных элементов применительно к работе с базами данных. Они обслуживают текущий набор данных, доступ к которому реализует один из компонентов Table, Query, StoredProc в сочетании с компонентом DataSource (рисунок 1).
DBGrid (таблица базы данных) использует табличную форму для визуализации и изменения данных, содержащихся в текущем наборе данных.
DBNavigator (навигатор базы данных) обеспечивает перемещение по записям набора данных, а также реализует вставку, удаление или редактирование записей.
DBText (текст базы данных) предназначен для отображения (но не изменения) текстовых полей набора данных.
DBEdit (текстовый редактор базы данных) используется для отображения и изменения текстовых полей набора данных.
DBMemo (многострочный текстовый редактор базы данных) предназначен для отображения и/или изменения многострочных текстовых полей (Memo-полей) набора данных.
DBImage (рисунок базы данных) предназначен для отображения и редактирования хранящихся в базе данных графических изображений.
DBListBox (список выбора базы данных) предназначен для отображения текущего значения текстового поля базы данных, а также занесения в него одного из возможных значений, содержащихся в списке.
DBComboBox (раскрывающийся список выбора базы данных) подобен компоненту ComboBox страницы Standard, но обслуживает текстовое поле базы данных.
DBCheckBox (независимый переключатель базы данных) обслуживает логическое поле базы данных.
DBRadioGroup (группа зависимых переключателей базы данных) служит для отображения состояния и выбора одного из взаимоисключающих значений поля базы данных.
DBLookupListBox (список выбора базы данных) отличается от DBListBox тем, что элементы списка заполняются содержимым, берущимся из полей другого набора данных, в то время как список DBListBox формируется произвольными значениями.
DBLookupComboBox представляет собой комбинированный список выбора базы данных. В отличие от DBComboBox, содержимое списка берется из другого набора данных.
RTF (редактор) служит для отображения и изменения текстовых полей, использующих расширенный текстовый формат RTF.
DBCtrlGrid (многострочная таблица базы данных), в отличие от DBGrid, позволяет редактировать в удобном для пользователя формате (в так называемом формате формы) сразу несколько записей из набора данных.
DBChart (график базы данных) реализует функциональные свойства компонента Chart применительно к базе данных.

Окно Редактора кода.
Окно Редактора кода (рисунок 2) включает в себя также встроенное окно — Исследователь кода (Code Explorer), оно расположено в его левой части. Редактор кода, с которым вы уже работали, предназначен для создания и редактирования текста программы. Этот текст составляется по специальным правилам и описывает алгоритм работы программы. Совокупность правил записи текста называется языком программирования. В системе Delphi используется язык программирования Object Pascal, который представляет собой расширенную и усовершенствованную версию широко распространенного языка Pascal корпорации Borland (Turbo Pascal и Borland Pascal).
Редактор кода является полноценным программным редактором. Его можно настраивать на различный стиль работы и выбирать тот, который вам удобнее. В Редакторе кода применяется выделение цветом синтаксических элементов, жирным шрифтом выделяются ключевые слова Object Pascal, синим цветом и курсивом выделяются комментарии.
В заголовке Редактора кода отображается имя текущего файла, того, с текстом которого вы работаете. В верхней части окна вы можете видеть также закладки или ярлычки, указывающие текущую страницу. Приложения Delphi могут использовать много исходных файлов, и закладки помогают вам переходить от одного из них к другому. Вы можете также открыть дополнительное окно Редактора кода командой View, New Edit Window или щелчком в окне правой кнопкой мыши и выбором аналогичного раздела из всплывающего меню. Это дает вам возможность одновременно работать с двумя модулями или с двумя разными фрагментами одного модуля.
В нижней части окна Редактора кода имеется строка состояния. В самой левой ее позиции находятся индикаторы строки и колонки. Они позволяют определиться, в каком месте текста вы находитесь.
Второй элемент строки — индикатор модификации. Когда вы начинаете новый проект, то код, который уже написан при помощи Delphi, еще не сохранен вами. Для его сохранения необходимо воспользоваться командой File/Save. Если код изменялся после последнего сохранения, то в индикаторе модификации (правее индикатора строки и колонки) появляется слово Modified. Это говорит о том, что код, который вы видите, отличается от сохраненного текста.
Третий элемент строки состояния — индикатор режима вставки. Это стандартный индикатор, который показывает, будут ли вводимые символы вставляться в текст или записываться поверх текста. Переключение на режим вставки производится клавишей Insert.
Конечно, несмотря на то, что среда Delphi берет на себя многие рутинные операции программирования, знание языка Object Pascal является непременным условием для любого программиста, работающего в этой среде.
Как вы видите из рисунка 2, первоначально окно Редактора кода содержит минимальный исходный текст, обеспечивающий нормальное функционирование пустой формы в качестве полноценного Windows — окна. В ходе работы над проектом вы вносите необходимые изменения и дополнения, чтобы придать программе нужную функциональность. Вводимый текст Delphi автоматически вставляет в выбранное место. Окно Редактора кода определяет поведенческую сторону окна приложения (т.е. окна, появляющегося после начала работы программы), а окно формы определяет его внешние проявления. Между ними существует тесная связь.
Обычно Delphi "хозяйничает" в верхней части Редактора кода, вставляя необходимый текст между строками

Unit Unit1;
и

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

{$R *.DFM} и end.
Чтобы вставить новую строку (строки), нужно сначала с помощью клавиш или щелчком по окну Редактора кода мышью поставить текстовый указатель (мигающую вертикальную черту) на нужное место, а затем с помощью клавиатуры ввести текст. Обычно текст кода программы располагается в нескольких строках. Для перехода на новую строку используйте клавишу Enter.
Если в процессе ввода вы ошиблись и тут же заметили свою ошибку, необходимо удалить ошибочный символ. Клавиша Backspace удаляет символ слева от мигающего указателя, а клавиша Delete удаляет символ справа от мигающего указателя. Если необходимо удалить всю строку текста, поставьте в любое место строки мигающий указатель, нажмите клавишу Ctrl и, не отпуская ее, клавишу с латинской буквой Y. Чтобы отменить последнее изменение текста, нажмите клавиши Ctrl+Z или выберите пункт меню Edit/Undo.
Редактор кода — это еще и отладчик, позволяющий вам шаг за шагом проверять исходный код вашей программы, изучать значения переменных и их свойств во время выполнения, устанавливать контрольные точки и проводить другие операции.
Когда вы создаете новый проект или запускаете Delphi в первый раз, то эта среда создает для вас в окне Редактора кода новый исходный файл Object Pascal, который является модулем, с именем по умолчанию unit1.
Модуль представляет собой строительный блок высокого уровня в программах Object Pascal. Он содержит как данные, так и программный код. Каждый модуль может быть доступным (т.е. доступными данные и элементы кода) для использования другими модулями. Обычно программы Object Pascal состоят из большого количества модулей. Многие из них, необходимые вам для создания приложений, уже существуют в Delphi. Они определяются как стандартные или встроенные и включают в себя: Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs и другие.
В окно Редактора кода встроена контекстная справка. Для получения справки по какому-то слову кода (ключевому слову, написанному имени подпрограммы или функции и т.д.) необходимо установить курсор на это слово и нажать клавишу F1. После этого вам будет показана соответствующая тема справки.

Менеджер проекта.
Начиная с Delphi 4, от прежнего Менеджера Проекта осталось только название, правильнее было бы назвать его Менеджером Проектов, поскольку теперь он стал инструментом управления группой проектов, обозначающих родственные проекты, с которыми можно работать параллельно. Например, это могут быть проекты клиента и сервера, обменивающиеся какой-либо информацией, или проект, создающий библиотеку DLL и использующий ее.
Чтобы открыть окно менеджера проекта, необходимо выбрать команду View главного меню Delphi (рисунок 3), далее команду Project Manager. Менеджер Проекта в Delphi 4 отличается от окна Delphi 5 только отсутствием выпадающего списка в верхней части окна.
При первом запуске Delphi формируется одна проектная группа с именем по умолчанию ProjectGroup1. В окне виден ее состав в виде иерархического дерева. В Delphi вы можете иметь один или несколько проектов, но проект может содержать большое количество модулей и форм. Двойной щелчок на вершине, связанный с текстом модуля или формой, открывает соответственно текст модуля в окне Редактора кода или форму. Выбор пиктограммы Unit1.pas открывает этот модуль в Редакторе кода, выбор пиктограммы Form1 открывает форму для визуального редактирования.
Таким образом, Менеджер Проектов позволяет осуществлять удобный переход в проектах от форм к модулям.
Если в данный момент нет открытого проекта, то в окне Менеджера Проектов будет написано No Project Group.
Кнопка New (новый), в отличие от предыдущих версий Delphi, имеет другой смысл. Она не добавляет модуль к проекту, а добавляет новый проект в группу проектов. Удаление ненужных проектов из группы проектов производится щелчком левой кнопкой мыши по команде Remove (удалить). Причем если выделена вершина проекта, то из группы удаляется проект; если выделена вершина модуля или его текста, то удаляется данный модуль.
Модуль из проекта можно удалить, если после его выделения сделаете щелчок правой кнопкой мыши. Всплывающее меню будет иметь команды Open (открыть), Remove From Project (удалить из проекта), Save (сохранить) и другие команды. Удалить выделенный модуль можно, нажав клавишу Delete.
После выделения в окне Project Manager проекта (имени файла .exe) и щелчка правой кнопкой мыши всплывет другое меню, команды которого позволят вам добавить новую форму или модуль (Add), удалить файл (Remove File) и ряд других команд.
Форма Delphi всегда имеет соответствующий модуль Object Pascal, который ее поддерживает. С другой стороны, исходный код паскалевского модуля не должен быть обязательно связан с какой-либо определенной формой, он может обеспечивать услуги, которые являются потенциально доступными и используются всеми формами.
Итак, если вы хотите добавить новый проект, то можете щелкнуть на кнопке New или выделить в окне имя группы проектов, щелкнуть правой кнопкой мыши и выбрать из всплывшего меню раздел Add New Project (добавить новый проект). После этого откроется диалоговое окно Репозитория, в котором вы можете выбрать новый проект с пустой формой.
Если вы хотите добавить в группу один из разработанных вами ранее проектов, то выделите в окне имя группы проектов и щелчком правой кнопкой мыши выберите из всплывшего меню команду Add Existing Project (добавить существующий проект). Далее в обычном окне открытия файла вы можете указать добавляемый файл проекта .dpr.
При добавлении в группу нового проекта в окне Project Manager будет отображаться информация обо всех проектах группы. Вы можете сохранить файл вашей группы, если выполните команду File/Save As... или если выделите в окне Менеджера Проектов имя группы, щелкните правой кнопкой мыши и из всплывающего меню выберите команду Save Project Group As. Группа проектов сохраняется в файле с расширением .bpg. В дальнейших сеансах работы вы можете открыть этот файл той же командой File/Open Project или File/Reopen, которой вы открываете проект.
Окно Менеджера Проектов встраиваемое, т.е. вы можете его встроить в окно Инспектора объекта.
В Delphi 5 в Project Manager введена возможность перетаскивать файлы с помощью мыши. Вы можете внутри группы перетащить модуль из проекта в проект.

Файлы проекта.
Когда вы сохраняете проект, то необходимо задать для вашего нового проекта исходную директорию, для того чтобы Delphi знала, где содержать файлы, которые она сгенерирует позже.
Чтобы его сохранить, вы уже выбирали команду Save Project as... из меню File. В этот момент Delphi открывает диалоговое окно File, спрашивает вас об имени модуля Object Pascal формы и предлагает выбрать диск и директорию, где вы хотите хранить модуль вашей формы и саму форму.
Имя для формы по умолчанию — Form1. Имя по умолчанию для соответствующего ей модуля Object Pascal — Unit1. Эти имена устанавливает Delphi, когда вы создаете новый проект. Но желательно изменять имена по собственному вкусу, чтобы название соответствовало содержанию программы, в таком случае вам будет легче ориентироваться среди множества вами созданных форм, модулей, проектных групп.
Среда Delphi объединяет язык Паскаль с визуальными возможностями программирования. Во время разработки приложения генерируются следующие типы файлов (рисунок 4, в качестве примера использована программа ShortCut).
Файл проекта .dpr содержит исходный паскалевский текст основной программы проекта. В нем перечисляются все файлы форм и модулей проекта, он содержит код, который инициализирует приложение. Файл проекта создается при первоначальном сохранении проекта.
Модуль .pas содержит исходный код (Object Pascal). Среда программирования создает один файл .pas для каждой формы, а в Delphi 5 создает паскалевский файл каждому фрейму. Файл .pas содержит все объявления и процедуры формы (вместе с процедурами, обрабатывающими события). Иногда вы можете создавать модули, не связанные с формами. Файл .pas создается, когда проект сохраняется в первый раз.
Файл .dfm содержит графические формы, которые являются двоичными файлами, каждый из которых содержит свойства одной формы, имеющейся в проекте. Delphi генерирует один файл .dfm, так же, как и соответствующий файл .pas для каждой формы. Этот файл создается, когда проект сохраняется в первый раз.
Файл опций проекта .dof представляет собой текстовый файл, который содержит текущие установки для опций проекта. Среда Delphi генерирует этот файл при первоначальном сохранении файла.
Файл .res представляет собой откомпилированный файл ресурсов, который является двоичным файлом и содержит пиктограмму программы и отдельные внешние ресурсы, используемые проектом.
Файл .dcu содержит откомпилированные файлы модуля, а также объектный код соответствующего (.pas) файла. Компилятор Delphi создает его, когда вы выдаете одну из команд Run, Compile или Build All из меню Run. Delphi использует файлы .dcu, когда создает заключительную исполнимую программу (в фазе, называемой связывание или компоновка).
Файл ~pa представляет собой резервную копию модуля, т.е. копию файла .pas в том виде, в котором он существовал перед самым последним сохранением. Среда Delphi создает этот параллельный файл при повторном сохранении проекта и обновляет его при последующих модификациях и сохранениях файла .pas.
Файл ~df представляет собой графическую резервную копию формы. Среда Delphi создает его, когда вы открываете файл .dfm как текст в Редакторе кода, производите изменения и затем сохраняете его. Файл ~df содержит копию файла .dfm в двоичном формате, каким он был перед последним сохранением.
Файл .CFG содержит информацию относительно установок, которые вы сделали для проекта в опциях Options/Environment.

Компонент Memo.
Компонент Memo — это еще один тип окна редактирования текста, которое допускает ввод текста из многих строчек. Строки в компоненте Memo могут простираться за правую границу управляющего элемента, так же как и в случае простых окон редактирования. Отличием является то, что они могут переноситься, образуя абзац, состоящий из нескольких видимых строк. Для управления переносом строк необходимо присвоить значение True свойству Wordwrap компонента Memo.
В нем предусматриваются линейки прокрутки для передвижения по тексту, который не умещается внутри границ управляющего элемента. Свойство ScrollBar задает видимость горизонтальных и вертикальных полос прокрутки.
Компонент Memo поддерживает многие свойства окон редактирования. Однако некоторые из них применимы только к многострочным окнам. Данный компонент не имеет свойства Text. Вместо этого имеется свойство Lines, которое позволяет вам управлять содержимым окна. Для манипуляции строками текста внутри компонента вы можете использовать методы и свойства TStrings. Двойной щелчок левой кнопкой мыши по кнопке с тремя точками слева от свойства Lines в окне (TStrings) инспектора объекта страницы Properties позволяет открыть специальный редактор текста (рисунок 5).
Самое простое применение компонента Memo — это редактирование текста. Смысл примера, приведенного ниже, состоит в следующем: создать редактор, который займет по размерам все содержащее его окно (или форму), и, тем самым, будет подобен собственному редактору Windows — Notepad ("Блокнот"). В созданном вами редакторе будет возможность выбирать шрифт для вводимого текста.
Для реализации данного примера необходимо проделать следующее:
1. Запустите Delphi.
2. Сохраните файл модуля под именем Tmemo_pas, а файл проекта под именем Tmemo dpr.
3. Поместите компонент Memo со страницы Standard палитры компонентов на форму. Удалите текст в компоненте, для этого используйте свойство Lines. Двойным щелчком по кнопке с тремя точками справа от слова (TStrings) войдите в редактор текста и удалите надпись Memo1. Для удаления рамки вокруг компонента Memo1 установите свойство BorderStyle в положение bsNone, используя в инспекторе объекта страницу Properties. Чтобы Memo занимал всю клиентскую область формы или всю ее внутреннюю часть, необходимо присвоить свойству Align значение alClient. Для добавления полос прокрутки выберите свойство ScrollBars и установите значение ssBoth.
4. Поместите на форму компонент FontDialog со страницы Dialogs палитры компонентов. Его положение на форме безразлично.
5. Используя инспектор объекта для выделенного (активизированного) компонента Memo1, перейдите на страницу Events. Справа от события OnDblick проведите двойной щелчок левой кнопкой мыши и напишите в Редакторе программный код, позволяющий изменять шрифт текста в компоненте Memo1, по вашему усмотрению:

procedure TForm1.Memo1DblClick (Sender: TObject); begin FontDialog1.Font:= Memo1.Font; FontDia
log1.Execute; Memo1.Font:= FontDialog1.Font; end; end.
Данный код в первой строке, после ключевого слова begin, копирует текущий шрифт в соответствующее свойство диалоговой панели, делая шрифт выбранным по умолчанию. Затем выполняется диалоговая панель — это вторая строка кода. В итоге свойство Font будет содержать выбранный пользователем шрифт, который третья строка кода копирует назад в Memo, тем самым активизируя его.
6. Добавьте в приложение интересное свойство — метод подсчета символов текста и отображения этого числа в окне сообщения. Ядром метода является вызов функции GetTextLen компонента Memo. Добавьте компонент Button1, используя свойство Caption, введите заголовок для кнопки "Подсчет числа символов". Число извлекается и форматируется в выходную строку:

procedure TForm1.Button1Click (Sender: TObject); begin MessageDlg(Format('Число символов текст
а составляет %d',[Memo1.GetTextLen]), mtInformation, [mbOk],0); end; end.
Следует иметь в виду, что производится также подсчет пробелов между словами.
7. Для того чтобы задать цвет компоненту Memo1, поместите компонент ColorDialog со страницы Dialogs палитры компонентов в любое место на форме, компонент невидим после запуска готового приложения. Поместите кнопку Button2 на форму, по щелчку которой будете вызывать диалоговое окно задания цвета компоненту Memo1. Используя свойство Caption для кнопки, измените заголовок кнопки на "Цвет компонента Memo". Программный код показан ниже:

procedure TForm1.Button2Click (Sender: TObject); begin ColorDialog1.Color:= Memo1.Color; Color
Dialog1.Execute; Memo1.Color:= ColorDialog1.Color; end;
8. Для выравнивания текста вправо, влево и по центру добавьте на форму три кнопки Button3, Button4, Button5. Введите для них соответственно заголовки "Выравнивание вправо", "Выравнивание влево", "Выравнивание по центру". Программный код показан ниже:

procedure TForm1.Button3Click (Sender: TObject); begin Memo1.Alignment:=taLeftJustify; end; pr
ocedure TForm1.Button4Click(Sender: TObject); begin Memo1.Alignment:=taRightJustify; end; procedure 
TForm1.Button5Click(Sender: TObject); begin Memo1.Alignment:=taCenter; end;
Результат работы программы показан на рисунке 6.
Следует отметить, что хотя данная программа позволяет выбрать шрифт, он будет применен ко всему набранному тексту. Windows содержит новый управляющий элемент, который способен поддерживать формат Rich Text Format (RTF). Компонент Delphi — RichEdit — инкапсулирует поведение этого стандартного управляющего элемента. С помощью данного компонента изменяется шрифт не во всем тексте, а в выделенной части.
Чтобы показать работу приложения с использованием данного компонента, добавьте компонент RichEdit со страницы Win32 палитры компонентов. Определите его положение на всю клиентскую область. Для выбора шрифта поместите кнопку на небольшую панель в верхней части формы, таким образом, создадите простую инструментальную линейку. Для изменения шрифта поместите компонент FontDialog. Работа приложения заключается в следующем: после выделения интересующей вас части текста производите щелчок по кнопке для вызова компонента FontDialog и определяете размеры шрифта и т.д. Программный код показан ниже:

procedure TForm1.Button1Click (Sender:TObject); begin if RichEdit1. SelLength>
0 then beg
in FontDialog1. Font.Assign(RichtEdit1. DefAttributes); if FontDialog1. Execute then RichEdit1.SelAt
tributes.Assign(FontDialog1.Font); end else ShowMessage('Текст не выделен'); end; end.

Литература:
1. Марко Канту. Delphi 2 для Windows 95/NT. Москва. ООО "Малип". 1997 г.
2. Джон Матчо. Дэвид Р. Фолкнер. Delphi. Москва. БИНОМ. 1995 г.
3. Эндрю Возневич. Delphi. Освой самостоятельно. Москва. Восточная книжная компания. 1996 г.
4. В. В. Фаронов. Delphi 5. Учебный курс. Москва. Издательство Нолидж. 2000 г.
5. А. Я. Архангельский. Программирование в Delphi 5. Москва. ЗАО "Издательство Бином". 2000 г.

Владимир Скуратов


(c) компьютерная газета




Компьютерная газета. Статья была опубликована в номере 19 за 2001 год в рубрике программирование :: delphi

©1997-2024 Компьютерная газета