CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Согласно свежей информации в Сети, модифицированные версии графических ускорителей Radeon RX Vega ...
Компания PNY сообщает о выпуске графического ускорителя PNY GeForce GTX 1070 8GB XLR8. В данной ...
Сегмент корпусных вентиляторов в эти дни пополнился моделями в исполнении компании Raijintek. Речь ...
Компания GeIL накануне анонсировала оперативную память серии GeIL Super Luce RGB Lite DDR4. Данные ...
Специалисты компании iiyama предлагают своим клиентам новый крупноформатный монитор. Речь идет о ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Дельфин в море информации

Иван МОРОЗ

Продолжение, начало см. в МК № 41 (264).

Теперь несколько пояснений по поводу создаваемых таблиц. Настоятельно рекомендую сохранять таблицы под теми именами, которые предлагаю я. Во-первых, это позволит избежать путаницы с именами в дальнейшей работе, а во-вторых, позволит быстро ориентироваться в программном коде. Что касается типов полей, расшифровка их обозначений представлена в Таблице 1. На мой взгляд, этих данных вполне хватит, чтобы создать таблицы и сохранить их куда надо. Не расстраивайтесь, если не все получится с первого раза. Возможно, придется сделать несколько попыток, пока не добьетесь поставленной цели, но зато какое наслаждение наступит после :-)…

Таблица 1.

Следующим нашим шагом будет создание индексов. Поля, по которым будет строиться индекс, давайте условимся называть индексными полями. В принципе, индекс — это просто некое оглавление таблицы, просмотр которого выполняется перед обращением к ее, таблицы, записям. Использование индексированных полей позволяет выполнять сортировку данных, а также ускоряет поиск. Давайте поподробнее разберем процесс создания индексов на примере одной уже ранее созданной вами таблицы. С остальными тремя вы сможете поэкспериментировать самостоятельно, заодно и руку набьете. Я лишь укажу, по каким полям следует построить индексы.

Итак, для начала откройте в программе Database Desktop таблицу Main_base. Далее выбираем Table > Restructure. Перед нами появляется структура таблицы. После этого из списка Table properties (Свойства таблицы) выбираем пункт Secondary Indexes. Заметьте, кнопка Define стала доступной. Жмем ее. Перед нами появляется окно Define secondary Index. В левом списке указаны названия всех полей таблицы Main_base. Выбираем поле Дата и стрелочкой отправляем его в правый список. После нажатия кнопки OK появляется окно Save Index As, в однострочном редакторе указываем имя индекса —indDate. Подтверждаем сохранение индекса еще одним нажатием кнопки OK. Если вы все выполнили правильно, то в поле, которое находится под кнопкой Define, должно появиться название новоиспеченного индекса. Теперь эту нехитрую процедуру следует повторить для трех оставшихся таблиц, не забывая подглядывать в Таблицу 2.

Таблица 2.

Если вы смогли внимательно выполнить все данные мной рекомендации по созданию таблиц и индексов, можно считать, что вы научились создавать таблицы в программе Database Desktop, а это уже много. Теперь переходим непосредственно к созданию приложения, а именно: к разработке интерфейса главного окна приложения.

После запуска Delphi, перед вами появится абсолютно пустая форма. Обычно слева располагается окно Инспектор объектов (Object Inspector). Это окно имеет две закладки: Properties и Events. Если активировать закладку Properties, то, выделяя какой-либо компонент, находящийся на форме, можно быстро менять многие его свойства. Стоит заметить, что эти изменения можно проводить и в процессе выполнения приложения, выполняя это программными средствами. Закладка Events содержит процедуры, которые должен исполнить выделенный компонент при возникновении указанного события. Вообще, отличительной особенностью Delphi является наличие закладок, на которых располагаются компоненты, — к ним мы будем неоднократно обращаться в процессе работы.

Теперь давайте подмонтируем стандартные настройки Delphi. Для этого заходим в меню Tools > Environment Options. На закладке Preferences в полях Grid size X и Grid size Y устанавливаем значение 2. Тем самым мы изменим шаг сетки на форме, что позволит более точно позиционировать компоненты относительно друг друга.

После этого сохраним наше приложение, пока еще пустое. Заходим в меню File > Save As, переходим в ранее созданный каталог My_computer и даем имя Main_Unit. Теперь заходим в меню File > Save projects As и даем имя всему проекту (пусть он также будет называться My_computer).

Далее переходим в окно Object Inspector и в поле Name даем имя главной форме — пусть она будет называться Main, — заодно в свойстве Caption прописываем строку, которая будет отображаться в заголовке окна (синяя полосочка такая :-)). Лично я написал «База статей МК». Затем переходим на закладку Standard, выбираем компонент Panel. Добавляем три таких компонента на форму, они динамически получают имена Panel1, Panel2, Panel3. У Panel1 свойству Align устанавливаем значение alTop. Для Panel2 Align=alRight, в результате чего панель прилепится к правому краю формы. И, наконец, для Panel3 свойство Align=alClient. Постарайтесь достигнуть следующего результата: при масштабировании формы три панели должны покрывать всю ее площадь.

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

Теперь переходим к добавлению невизуальных компонентов — они не видны в процессе работы программы, но выполняют важные вспомогательные функции. Заходим на закладку Data Access и выбираем компонент Table, после чего добавляем его на форму. Повторяем эту процедуру еще три раза. Сразу присваиваем новым компонентам осмысленные имена: Main_Table, Autor_Table, Rubric_table, Subjects_Table. Теперь добавляем на форму четыре компонента Data Source (источник данных). Старайтесь размещать их один под другим, так будет легче ориентироваться в соответствиях наборов данных их источникам. Теперь перемещаемся на закладку Data Controls, разыскиваем там визуальный компонент DBGrid (сетка) и размещаем его на верхней панели. Присваиваем свойству DataSourse значение DataSourse1, тем самым назначая этот компонент источником данных. Также растягиваем его на всю верхнюю панель. Это легко сделать, изменив значение свойства Align на alClient.

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

выбираем компонент DataSourse1 и назначаем свойству DataSet значение Main_Table;

переходим на компонент Main_Table (я надеюсь, вы уже присвоили компоненту Table1 это имя), возле свойства DatabaseName появляется список, из которого выбираем наш псевдоним — My_comp;

после этого из списка TableName выбираем имя главной таблицы —Main_base.DB;

у компонента Main_table и его свойства Active значение False меняем на True.

Если вы все сделали правильно, то результатом этих манипуляций должна стать пустая таблица с заголовками полей. Как вы уже, наверное, догадались, процедуру придется повторить для остальных невизуальных компонентов (DataSourse и Table). Кстати, о таблицах. Вы можете посмотреть на ваши остальные три таблицы и заодно проконтролировать правильность установки связи между компонентами, что очень важно. Для этого поочередно у компонента DBGrid переберите возможные свойства DataSourse, назначая всякий раз новый источник данных. При смене источника данных на новый перед вами должна представать каждый раз новая таблица, с другими заголовками полей. Если таблица отображается не так, как вы ожидаете, или не отображается вообще, то советую еще раз внимательно проверить правильность указания всех свойств. Не забывайте подглядывать в Таблицу 3.

Таблица 3.

Теперь можно подумать и про навигацию. Для этого программисты из Borland придумали специальный компонент —DBNavigator. Ищем его на закладке DataControls. На мой взгляд, наиболее уютным местечком для него на форме будет левая панель, прямо под сеткой. Делаем маленький фокус под названием drug&драп :-) — и компонент уже на форме. Можно, конечно, убрать несколько кнопочек, поменяв значения свойства VisibleButton, но это уже на ваше усмотрение. В этом несложно разобраться. Также не забудьте свойство Align установить в положение alTop. Тогда навигатор прилепится к верхнему краю панели, как раз под сетку, и при масштабировании формы будет подстраиваться под размер панели, на которой находится.

Так как вы уже попрактиковались в добавлении компонентов на форму, мне незачем вас утомлять инструкциями вроде «кликни туда, перетащи сюда». Советую лишь взглянуть на иллюстрации, на которых хорошо видно, какие компоненты и куда следует «положить». Мне остается лишь комментировать; также остановлюсь на моментах, которые могу вызвать определенные трудности.

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

Старайтесь размещать компоненты на форме, развернутой на весь экран. Это позволит располагать поля и меню подальше друг от друга, что придаст более эстетичный вид нашему творению. Не думаю, что вам приятно работать в программе, где надписи громоздятся одна на другую так, что с трудом можно их прочитать. Компоненты Edit, Label, Combobox и PopupMenu (контекстное меню) можно найти на закладке Standard. Компонент PopupMenu я специально выделил (черные квадратики), чтобы вам легче было его отыскать. Компоненты MaskEdit и BitBtn ищите на закладке Additional. Компонент DateTimePicker, который отображает дату, тащите с закладки Win32. SpinEdit (счетчик) берем с закладки Samples.

После этого остается сделать несколько завершающих штрихов. Сначала меняем названия меток на что-нибудь осмысленное. Это можно сделать, если выделить требуемую метку и в окне инспекторе объектов возле свойства Caption написать что следует. Для Edit1 и MaskEdit1, а также для Combobox1, Combobox2, Combobox3 свойство Text должно быть пустым. Не забудьте поменять имена компонентов Label11, Label12 и Label13 на Labelmail, Labelsite и Labelfido соответственно — свойство Name.

Переходим к кнопкам. Прописываем для них осмысленные надписи. Ах, вы и картиночку добавить хотите? Ну что ж, активизируем свойство Glyph, рядом появится кнопка с тремя точками — это значит, что при нажатии на нее появится диалоговое окно. Жмем, не стесняясь. Ба, действительно диалоговое окно под названием Picture Editor. Кнопочка Load и есть то, что нам нужно. Вместе с дистрибутивом Delphi поставляется небольшая коллекция иконок, картинок и еще бог знает чего. Коллекция изображений для кнопок находится по адресу C:\Program Files\Common Files\Borland Shared\Images\Buttons. Из всего этого разнообразия выбираем нужную картинку и жмем ОК.

Переходим к PopupMenu. Этот невизуальный компонент предназначен для отображения контекстного меню. На вашей форме их должно быть аж четыре. (Для тех, кто не знает, что это такое, советую кликнуть правой кнопкой мыши по Рабочему Столу — то, что перед вами откроется, и есть контекстное меню.) Для того чтобы контекстным меню можно было воспользоваться, необходимо определить его пункты. Двойной щелчок — и перед вами нечто вроде меню, но безвидное и пустое. Именно здесь и будем создавать для него пункты. Какие? Смотрите в таблицу 4.

Таблица 4.

После этого привязываем визуальные компоненты, для которых эти меню будут отображаться, к невизуальным компонентам, которые содержат эти меню. Надо выделить компонент, для которого вы хотите создать меню, и назначить его свойству PopupMenu соответствующий невизуальный компонент из выпадающего списка. В Таблице 5 можно посмотреть, что к чему следует привязать. Последним штрихом, который следует нанести на форму, будет связывание DBNavigator с DataSource1 при помощи свойства DataSource. Это позволит в дальнейшем осуществлять навигацию по основной таблице.

Таблица 5.

Теперь наступает волнительный и приятный момент: первая компиляция и первый запуск нашего детища. Находим Run > Run, либо жмем F9. Поздравляю вас, товарищи, уже есть на что посмотреть. Какое наслаждение: ни строчки кода, написанного руками, а программа работает — правда, пока без единого намека на какую-либо функциональность. Но этот недостаток мы исправим в ближайшее время :-). Заодно проверьте правильную привязку контекстных меню. Если все верно, можно переходить к написанию кода.

Для начала придадим функциональность контекстным меню. Предлагаю начать с компонента PopupMenu4, у которого их всего два. Как вы могли догадаться, в главном окне программы можно выполнять сразу две функции: просматривать информацию о статьях в главной таблице, а также производить добавление информации о новых статьях. Иногда случается так, что редакция уходит в отпуск или празднует со всем компьютерным обществом Новый Год, например. Тоже ведь люди, значит, имеют полное право на это (:-) —прим. ред). Очень приятно, что редакция не забывает своего читателя, то есть нас с вами, и выпускает сдвоенные номера. Этот момент, несомненно, нужно предусмотреть в нашей программе. Для добавления номера в таблицу предусмотрено поле MaskEdit1. Этот компонент имеет некоторые нюансы, по сравнению с обычным однострочным редактором, таким как Edit. Главная его особенность — он позволяет вводить информацию по шаблону или по маске. Маска задается в свойстве EditMask.

Теперь выполняем двойной щелчок по PopupMenu4 и еще раз двойной по первому меню «Сдвоенный номер». Перед нами появляется пустая процедура. Вписываем между begin’ом и end’ом следующую строку:

Как вы догадываетесь, точка является разделителем между компонентом и его свойством. А строка №99-99 (999-999);1;_ является шаблоном. Цифра 9 является в данном случае специальным символом и означает, что в позицию, на которой она стоит, можно вводить только числовой символ. Повторяем процедуру добавления строчки кода для второго пункта контекстного меню. Строка такая:

Советую сразу запустить программу и посмотреть, как работают контекстные меню. Шаблон ввода должен меняться при выборе соответствующего пункта меню.

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

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov