ЛР_8 (1076760), страница 4

Файл №1076760 ЛР_8 (Лабораторная работа №8) 4 страницаЛР_8 (1076760) страница 42018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

С войство Компонент

DBEdit1 DBEdit2 DBEdit3 DBMemo1

DataSource DataSource1 DataSource1 DataSource1 DataSource1

DataField Monument Architect Photo Note


Так как значению свойства Active компонента Tablel присвоено значение True, то сразу после того, как будет присвоено значение свойству DataField, в поле компонента DBEdit появится содержимое соответствую­щего поля первой записи таблицы базы данных. Если таблица не содержит данных, поле остается незаполненным. Если значение свойства Active компонента Table1 равно False, то в поле компонента DBEdit появляется его имя, значение свойства Name.

Кроме компонентов просмотра-редактирования полей базы данных, в фор­му нужно добавить компонент Image, который используется для просмотра иллюстраций, и четыре компонента Label для вывода пояснительного тек­ста. Свойству Visible компонентов Image1, Label4 и DBEdit3 следует присвоить значение False.

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

Для того чтобы иметь возможность просматривать другие записи файла данных, в форму приложения нужно добавить компонент DBNavigator, зна­чок которого находится на вкладке Data Controls (рис. 17). Компонент DBNavigator (рис. 18) представляет собой набор кнопок, при щелчках на которых во время работы программы происходит перемещение указателя текущей записи к следующей, предыдущей, первой или последней записи базы данных, а также добавление к файлу данных новой записи, удаление текущей записи.

Рис. 17. Значок компонента DBNavigator находится на вкладке Data Controls




Рис.18. Компонент DBNavigator

Табл. 12 содержит описания действий, которые выполняются в результате щелчка на

соответствующей кнопке компонента DBNavigator.

Таблица 12. Кнопки компонента DBNavigator

Кнопка Обозначение Действие


К первой nbFirst Указатель текущей записи перемещается к первой записи файла

дан­ных



К предыдущей nbPrior Указатель текущей записи переме­щается к предыдущей записи

файла данных



К следующей nbNext Указатель текущей записи перемещается к следующей записи

файла данных


К последней nbLast Указатель текущей записи перемещается к последней записи

файла данных



Добавить nblnsert В файл данных добавляется новая

запись


Удалить nbDelete Удаляется текущая запись файла данных


Редактирование nbEdit Устанавливает режим редактирова­ния текущей записи


Сохранить nbPost Изменения, внесенные в текущую запись, записываются в файл

данных


Отменить Cancel Отменяет внесенные в текущую запись изменения



Обновить nbRefresh Записывает внесенные изменения в файл

Свойства компонента DBNavigator перечислены в табл. 13.

Таблица 13. Свойства компонента DBNavigator

Свойство Определяет

N ame Имя компонента. Используется для доступа к свойствам компонента

DataSource Имя компонента, являющегося источником данных. В качестве источника данных

может выступать база данных (ком­понент Database), таблица (компонент Table) или

резуль­тат выполнения запроса (компонент Query)

VisibleButtons Видимые командные кнопки

Следует обратить внимание на свойство VisibleButtons. Оно позволяет скрыть некоторые кнопки компонента DBNavigator и тем самым запретить выполнение соответствующих операций

над файлом данных. Запретите удаление записей, присвоив значение False СВОЙСТВУ VisibleButtons.nbDelete.

На рис. 19 приведен вид формы приложения Архитектурные памятники Санкт-Петербурга после добавления компонента DBNavigator. Свойству DataSource компонента DBNavigator1 следует присвоить значение DataSource1 (компонент DataSource1 связан с Table1).

Рис. 19. Окончательный вид формы приложения Архитектурные памятники Санкт-Петербурга

В принципе, после добавления в форму компонента DBNavigator простей­шая программа управления базой данных готова. Эта программа обеспечи­вает просмотр, редактирование, добавление новых и удаление ненужных записей.

Теперь рассмотрим, что надо сделать, чтобы во время просмотра в поле Image1 автоматически появлялись фото­графии памятников, а компоненты DBEdit3 и Label4 были бы не видны, а во время добавления информации в базу данных пользователь мог бы вводить в поле photo имя файла фотографии.

Такой алгоритм работы с фотографиями можно реализовать следующим образом. При просмотре базы данных поле имени файла иллюстрации (DBEdit3) и его заголовок (Label4) на форме не отображаются. Если пользователь на­жимает одну из кнопок компонента DBNavigator, то как результат обработ­ки события OnClick вызывается процедура TForml.DBNavigatorlClick, которая, если были нажаты кнопки Добавить или Редактировать, делает видимым поле DBEdit3, тем самым позволяя пользователю ввести или изменить имя файла иллюстрации.

Разрабаты­ваемое приложение предполагает, что изображения (фотографии) архитек­турных памятников находятся в подкаталоге Data каталога, в котором размещена програм­ма работы с базой данных. Имя этого каталога можно определить во время работы программы путем обращения к функциям Paramstr(0) и ExtractFilePatch. Значение первой — полное имя выполняемого файла программы, второй — путь к этому файлу (удаляет имя файла из Paramstr(0)). Это уместно сделать при активации таблицы (процедура Table1BeforeOpen).

В листинге 1 приведен текст модуля программы Архитектурные памятни­ки Санкт-Петербурга.

unit peter_;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, DBCtrls, Mask, Db, DBTables,

jpeg; // чтобы можно было выводить jpg иллюстрации

type

TForm1 = class(TForm)

Table1: TTable; // база данных - таблица

DataSource1: TDataSource; // источник данных для полей редактирования-просмотра

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBMemo1: TDBMemo;

Image1: TImage;

DBEdit3: TDBEdit;

DBNavigator1: TDBNavigator;

Label4: TLabel;

procedure Table1AfterScroll(DataSet: TDataSet);

procedure DBEdit3KeyPress(Sender: TObject; var Key: Char);

procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

procedure Table1BeforeOpen(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

BmpPath: string; // Путь к файлам иллюстраций. Иллюстрации

// находятся в подкаталоге Data каталога программы.

implementation

{$R *.DFM}

// выводит фотографию в поле Image1

procedure ShowFoto(foto: string);

begin

try

Form1.Image1.Picture.LoadFromFile(BmpPath+foto);

Form1.Image1.Visible:=True;

except

on EFOpenError do

begin

MessageDlg('Файл иллюстрации '+foto+' не найден.', mtInformation, [mbOk], 0);

end;

end;

end;

// переход к другой записи (следующей, предыдущей, первой или последней)

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);

begin

if form1.DBEdit3.Visible

then

begin

form1.DBEdit3.Visible := False;

form1.Label4.Visible:=False;

end;

if Form1.DBEdit3.Text <> ''

then ShowFoto(Form1.DBEdit3.Text)

else form1.Image1.Visible:=False;

end;

// нажатие клавиши в поле Фото

procedure TForm1.DBEdit3KeyPress(Sender: TObject; var Key: Char);

begin

if (key = #13) then

if Form1.DBEdit3.Text <> ''

then ShowFoto(Form1.DBEdit3.Text) // показать иллюстрацию

else form1.Image1.Visible:=False;

end;

// щелчок на компоненте Навигатор

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

begin

case Button of

nbInsert: begin

Image1.Visible:=False; // скрыть область вывода иллюстрации

DBEdit3.Visible:=True; // показать поле Фото

Label4.Visible:=True; // показать метку Фото

end;

nbEdit: begin // редактирование записи

DBEdit3.Visible:=True; // показать поле Фото

Label4.Visible:=True; // показать метку Фото

end;

end;

end;

//перед открытием таблицы

procedure TForm1.Table1BeforeOpen(DataSet: TDataSet);

begin

BmpPath:=ExtractFilePath(ParamStr(0))+'data\';

end;

end.

Вызов процедуры вывода фотографии (ShowFoto) во время просмотра базы данных выполняет процедура TForml.Table1AfterScroll, которая обеспечи­вает обработку события AfterScroll для компонента Table1. Событие AfterScroll происходит всякий раз после перехода к другой (следующей, предыдущей, первой, последней) записи таблицы как результат щелчка пользователя на соответствующей кнопке компонента DBNavigator. Процедура TForm1.TabielAfterScroll анализирует содержимое поля (photo) Form1.DBEdit3.Text и, если оно не пустое, что свидетельствует о наличии ссылки на файл фотографии, выводит иллюстрацию.

При просмотре базы данных поле имени файла иллюстрации (DBEdit3) и его заголовок (Label4) на форме не отображаются. Если пользователь на­жимает одну из кнопок компонента DBNavigator, то как результат обработ­ки события OnClick вызывается процедура TForml.DBNavigatorlClick, которая при щелчке кнопки Добавить или Редактировать делает доступным поле DBEdit3, тем самым позволяя пользователю ввести или изменить имя файла иллюстрации.

Процедура TForm1.DBEdit3KeyPress обрабатывает событие OnKeyPress для компонента DBEdit3. Если пользователь ввел в поле Edit3 (photo) имя фай­ла иллюстрации и нажал клавишу <Enter> (ее код равен 13), то процедура TFormi.DBEdit3KeyPress выводит иллюстрацию путем вызова процедуры ShowFoto.

Характеристики

Тип файла
Документ
Размер
693 Kb
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

Лабораторная работа №8
8
8_Питер
Data
peterburg.cfg
peterburg.dof
peterburg.dpr
peterburg.exe
peterburg.res
peterburg_.dcu
peterburg_.ddp
peterburg_.dfm
peterburg_.pas
peterburg_.~ddp
peterburg_.~dfm
peterburg_.~pas
8_школа
data
school.cfg
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7021
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее