Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Историко-стилистический анализ




Begin

Var

Begin

Begin

Var

Begin

Begin

Begin

Response.Content:=DataSetTableProducer1.Content;

end;

Оформим обработчик события ОnAсtion для действия по умолчанию, который может выглядеть так:

 

procedure TWebModule1.WebModule1defaultAction(Sender:TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

Response.Content:='<H2>Ошибка запроса!</H2>';

Response.Content:=Response.Content+'<a href=../dstr2.exe>

<h2>Назад</h2></a>';

end;

 

Первая часть задачи выполнена. Клиент может отправить запрос к базе данных на сервер и получить отчет о запросе в окне браузера.

(http://localhost/cgi-bin/Имя проекта.exe)

 

 

 

Далее реализуем вторую половину задачи: просмотрев весь список соревнований, клиент должен иметь возможность получить полную информацию об интересующем его состязании.

Простейший вариант, это превратить строки с названиями состязания в первой колонке в ссылки. И это можно сделать, если воспользоваться одним из трех событий поставщика, возникающих в процессе формирования таблицы. Эти события называются OnCreateContent, OnGetTableCaption и OnFormatCell.

Первое инициируется перед созданием таблицы. В нем можно внести последние изменения в этот процесс или совсем отменить: если обработчик этого события вернет в параметре Continue значение False, то таблица формироваться не будет.

Второе событие вызывается при формировании заголовка таблицы. В этом обработчике можно изменить название таблицы и задать режим выравнивания текста заголовка.

 

 

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

 

procedure TWebModule1.DataSetTableProducer1FormatCell(Sender:TObject;

CellRow, CellColumn: Integer;

var BgColor:THTMLBgColor;

var Align: THTMLAlign; var VAlign:THTMLVAlign;

var CustomAttrs,CellData: String);

if (CellRow>0) and (CellColumn=0) then

Celldata:='<a href=dstr2.exe\full?EventNo='+

table1.Fields[0].AsString+'>'+Celldata+'</A>';

end.

 

Параметры этой процедуры включают в себя номера столбца и строки таблицы для обрабатываемой ячейки (нумерация начинается с нуля), цвет фона ячейки, горизонтальное и вертикальное выравнивание, дополнительные атрибуты ячейки и текст, помещаемый в ячейку. В операторе if проверяются номера столбца и строки ячейки, и если ячейка не из первой строки (строки заголовка) и находится в первом столбце, то ее содержимое меняется: добавляются соответствующие теги HTML и данные о пути и запросе. В качестве имени пути здесь вставлена строка full, но объекта-действия для этого пути пока нет.

Далее, за именем пути прописывается строка EventNo=, к которой добавляется содержимое первого поля базы данных, поле EventNo, преобразованное в строку. В результате Query -часть запроса для одной из строк таблицы будет иметь вид EventNo=7. Теперь нужно создать объект-действие для пути /full. Это действие должно сформировать новый документ с подробными данными о выбранном спортивном состязании. Для данной цели будет использоваться другой поставщик данных из таблиц данных: ТDataSetPageProducer. Добавим его в форму приложения. В свойстве DataSet этого компонента нужно указать таблицу, с которой работает поставщик, - Table1 в данном случае. Затем заполняем свойство HTMLDoc шаблоном, заготовкой того документа, который должен получить клиент.

Шаблоны использует еще один компонент из панели Internet: TPageProducer. Когда в процессе обработки документа, компоненту встречается шаблон, он инициирует событие OnHTMLTag. В обработчике этого события должна пройти замена шаблона на соответствующие данные. Но в случае рассматриваемого компонента, TDataSetPageProducer, обработкой шаблонов можно и не заниматься, если дать им имена совпадающие с именами полей таблицы данных. В этом случае компонент сам произведет замену шаблонов на значения соответствующих полей текущей записи таблицы данных. В качестве "шаблонного" документа можно использовать следующий текст:

<html>

<head>

<title>Обзор спортивного состязания</title>

</head>

<Table Width="100%" Border=1 BgColor="Silver"><Caption>Заказ билетов на

спортивные соревнования</Caption>

<TR><TH Align="Right">Номер по порядку</TH>

<TH Align="Left"><#EventNo></TH></TR>

<TR><TH Align="Right">Название состязания</TH>

<TH Align="Left"><#Event_Name></TH></TR>

<TR><TH Align="Right">Дата проведения</TH>

<TH Align="Left"><#Event_Date></TH></TR>

<TR><TH Align="Right">Время проведения</TH>

<TH Align="Left"><#Event_Time></TH></TR>

<TR><TH Align="Right">Цена билета</TH>

<TH Align="Left"><#Ticket_price></TH></TR>

</Table>

<br><br>

<#Event_Description>

<br><br>

<#Event_Photo>

<br><br>

<a href="../dstr2.exe">Вернуться назад</a>

</body>

</html>

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

Далее нужно создать объект-действие для значения пути full, у него в свойстве PathInfo задается строка /full. Если выбрать из списка значений свойства Producer значение DataSetPageProducer1 и откомпилировать проект, то получим следующее: при выборе разных строк таблицы выводятся данные только из первой записи. И это закономерно, так как данные для получения сведений из нужной записи есть, но они никак не используются.

Очевидно, самым простым решением в данном случае было бы простое перемещение указателя в таблице на отобранную запись. И сделать это можно в обработчике события OnAction объекта-действия full. Но чтобы этот обработчик срабатывал первым, необходимо очистить свойство Producer и вызывать нужный поставщик из обработчика события OnAction. Обработчик будет выглядеть следующим образом:

procedure TWebModule1.WebModule1fullAction(Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);

q1:string;

options:TLocateOptions;

q1:=Request.QueryFields.Values['EventNo'];

Table1.Locate('EventNo',q1,options);

Response.Content:=DataSetPageProducer1.Content;

end;

Здесь в переменную q1 помещается значение для поля EventNo, затем выполняется переход к соответствующей записи таблицы, которая становится теперь текущей записью, а в последней строке вызывается функция Content поставщика данных, который подставляет на место шаблонов, значения из текущей записи таблицы и возвращает сформированный документ свойству Content объекта Response.

В таблице events.db имеются еще графические изображения и Mемо -поля, их также нужно выводить в ответ на запрос пользователя. Сейчас вместо графики и текста из Mемо -поля можно увидеть в браузере "условные обозначения" (MEMO) и (GRAPHIC). Для работы с этими полями придется ввести в обработчик события OnHTMLTag компонента TDataSetPageProducer следующий код:

procedure TWebModule1.DataSetPageProducer1HTMLTag(Sender:TObject;

Tag: TTag; const TagString: String;

TagParams: TStrings; var ReplaceText: String);

if CompareText(TagString,'Event_Photo')=0 then

ReplaceText:='<img src=Photo?EventNo='+

table1.Fields[0].AsString+'>';

if CompareText(TagString,'Event_Description')=0 then

ReplaceText:=Table1.FieldByName('Event_Description').AsString;

end;

Что касается обработки Mемо -поля, то здесь все делается в одну строку, а за рисунком придется еще раз обратиться на Web -сервер. Здесь формируется тег HTML, используемый для описания графических изображений, который ссылается на приложение (имя приложения и адрес сервера браузер в данном случае подставляет сам) с новым значением пути Photo, за которым следует ссылка на нужную запись таблицы данных. Естественно, нужно добавить в приложение еще один объект-действие, обработчик события OnAction, код которого приводится ниже:

procedure TWebModule1.WebModule1PhotoAction(Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled:Boolean);

B:TBitmap;

S:TMemoryStream;

q1:string;

options:TLocateOptions;

q1:=Request.QueryFields.Values['EventNo'];

Table1.Locate('EventNo',q1,options);

B:=TBitmap.Create;

B.Assign(Table1.FieldByName('Event_Photo'));

S:=TMemoryStream.Create;

B.SaveToStream(S);

S.Position:=0;

Response.ContentType:='image/x-xbitmap';

Response.ContentStream:=S;

B.Free;

end;

В вышеприведенном фрагменте вначале указатель в таблице устанавливается на нужную запись, затем создается объект типа BitMap и в него переписывается содержимое поля Event_Photo. Затем создается поток в памяти и в него переписывается нужный графический образ. Далее остается установить указатель в потоке на начало и передать Web -серверу указатель на поток и тип данных в потоке.

Сведения об авторах произведения

Общественно-исторические условия, в которых создавалось произведение (Год создания. Первое исполнение)     Музыка анализируемого произведения впервые прозвучала в художественном фильме «Роберта», созданном в жанре мюзикла и вышедшем в прокат в 1935 году,  
Сведения о жизни и творчестве композитора
Годы жизни 27 января 1885 года - 11 ноября 1945 г.  
Краткие сведения о жизни Джером Керн родился в семье немецких эмигрантов-евреев. Он закончил музыкальный колледж в Нью-Йорке (1904) и затем продолжил обучение в Европе, а по возвращении в Нью-Йорк работал театральным пианистом и сочинял музыкальные номера для лондонских театров, которые пользовались успехом. К концу 1920-х годов Д. Керн становится известным театральным композитором. В 1925г. Д. Керн знакомится с известным либреттистом и продюсером Оскаром Хаммерстайном II. и с этого момента начинается их многолетняя дружба и сотрудничество. После грандиозного успеха «Плавучего театра» Д. Керн заключает контракт с кинокомпанией Warner Bros. (1930) на создание звуковых киномюзиклов. Однако первый его фильм (Men of the Sky) был встречен холодно, и Д. Керн снова возвращается к театральной музыке. Новым успехом стали мюзиклы:
Характеристика творчества, перечень произведений (Представить нотные примеры произведений) Музыка создавалась в различных жанрах, и особенно в песенном - очень популярном в период свинга. Чаще всего такие песни написаны в форме А-А-В-А, где А и В - различные в мелодическом и гармоническом отношении части. - “Music in the Air” 1932-го и 'Роберта' ('Roberta'); - 1936г. композиция 'The Way You Look Tonight', прозвучавшая в фильме 'Swing Time'; - 1941г. песня 'The Last Time I Saw Paris', звучавшую в фильме 'Lady Be Good'; - 1944 г. мюзиклы: 'Cover Girl' и 'Can't Help Singing'; - оперетта «Плавучий театр» (Showboat), «Песня о Миссисипи» (Ol' Man River); - Мюзикл «Плавучий театр»; - «Music in the Air» (1932) и «Роберта» (Roberta, 1933).
Сведения об авторе переложения или обработки     Произведение «Дым» звучит в переложении для хора У. Стиклза.
Краткие сведения об авторе литературного текста
Годы жизни 18 ноября (1 декабря) 1901 - 1984
Краткие сведения о жизни Сикорская Татьяна Сергеевна родилась в посёлке Сюгинского стекольного завода, ныне г. Можга. С 1918г. устраивается корреспондентом в газету, начинает заниматься литературным трудом (первые стихи опубликованы в 1919 году), в 1925г. поступает на литературный факультет Московского университета и заканчивает его в 1930 году. Занимается переводами текстов сначала песен народов СССР, а позже и зарубежных авторов. становится членам Союза писателей. В 1940-1960-е годы становится плодотворным творческий союз Сикорской и Болотина (переводы текстов чешских, болгарских, румынских, французских, польских и многих других стран и народов). Музыку на стихи Болотина и Сикорской писали многие известные композиторы, в т. ч. написан вокальный цикл «Испанские песни» Д. Шостаковича.  
Общая характеристика творчества, перечень произведений Многие песни на стихи Татьяны Сикорской или в её переводах стали очень популярны. Отмечалось, что, приспосабливая перевод к требованиям исполнителя и цензуры, она зачастую создавала практически оригинальный текст. Вот некоторые известные песни:
  • «Марш летчиков» (1931, муз. Б. Шехтера, сл. Т. Сикорской)
  • «Песня о Ворошилове» (1934, муз. Ф. Сабо, сл. Т. Сикорской)
  • «Враг не пройдет!» (1937, муз. В. Кочетова, сл. Т. Сикорской, исп. Борис Дейнека)
  • «Мы пройдём» (1937, муз. В. Кочетова, сл. Т. Сикорской, исп. Борис Дейнека)
  • «Сулико» (1937, муз В. Церетели, сл. А. Церетели (груз.), рус. текст Т. Сикорской)
  • «Северный полюс» (1937, муз. В. Кручинина, сл. С. Болотина и Т. Сикорской)
  • «Марш пятого полка» (1938, муз. Г. Эйслера, сл. Т. Сикорской)
  • «Мать» (1938, муз. А. Новикова (по др. ист. И. Дунаевского), сл. Т. Сикорской)
История создания данного поэтического произведения   После неуспешного фильма возвращается к мюзиклам и пишет «роберта» 1933 по рассказам своего друга Хаммерстайна II
Содержание литературного текста
Раскрыть содержание, выявить подтекст В сердце героя этого произведения живёт глубокое чувство любви, которое он сохранил на всю жизнь, и обращается к нему в своих светлых воспоминаниях.
Образы Голубая ночь, облако, яблонь дым, ветвь, сад.    
Тема Тема любви
Идея   Настоящее чувство живет вечно  
Если текст является отрывком какого-либо литературного произведения, необходимо дать характеристику всего произведения  
     




Поделиться с друзьями:


Дата добавления: 2017-01-13; Просмотров: 242; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.036 сек.