Лабораторная работа: Технологія WebSnap
{
if (c>0) s += ' | '
if (Page.Name != e.item().Name)
s += '<a href="' + e.item().HREF + '">' + e.item().Title + '</a>'
else
s += e.item().Title
c++
}
}
if (c>1) Response.Write(s)
%>
у файлі Unit1.html генерує панель навігації . Текст функції достатньо зрозумілий, деякі коментарі необхідні лише для останнього оператора Response.Write . Цей оператор виводить рядок з результатом роботи скрипта в HTML-файл сторінки. Ще один приклад можна побачити в тому ж Unit1.html:
<%= Application.Title %>
В результаті роботи цього скрипта на сторінку виводиться її заголовок.
Приклад 3. Використання адаптерів у WebSnap-сервері
Адаптери призначені для зберігання різних параметрів і процедур; вони надають можливість звертатися до них зі скрипта. Сторінка WebSnap палітри компонентів Borland C++ Builder 6 містить декілька видів адаптерів. Найбільш неспеціалізованим є адаптер класу TAdapter. Параметри адаптера зберігаються в так званих полях (AdapterFields ), якінадають програмісту можливість задати оброблювачі для отримання значення поля та інших його параметрів. Клас TAdapter має властивість Data для зберігання полів і керування ними. Процедури дозволяють викликати зі скрипта виконання яких-небудь дій; для керування ними клас TAdapter містить властивість Actions.
Розглянемо приклад створення сторінки для введення імені користувача. Розташуймо компонент Adapter в модулі PageProducerPage2. Визначимо поле, яке повертатиме ім'я користувача. Для цього з інспектора об'єктів викличемо редактора властивості Data адаптера Adapter1. У редакторі натиснемо кнопку New Item. Нам буде запропонований діалог вибору типу поля (мал. 13 ).
Малюнок 13
Оберімо тип AdapterField, оскільки він найбільш підходить для зберігання невеликих рядків. У діалозі при цьому з'явиться елемент AdapterField1, відповідний полю. Оберімо його. Тепер в інспекторі об'єктів перейдемо на закладку Events і визначимо текст оброблювача події OnGetValue. Дана подія виникає кожного разу, коли потрібно дізнатися значення поля. Значення поля, що зажадалося, необхідно повертати через параметр Value, передаваний в оброблювач. Код оброблювача:
void __fastcall TPageProducerPage2::AdapterField1GetValue(TObject *Sender,
Variant &Value)
{
Value = FValue;
}
Тут FValue - змінна, в якій запам'ятовується значення поля AdapterField1; необхідно визначити цю змінну в секції public декларації TPageProducerPage2 (файл Unit2.h) як AnsiString FValue;. Для ініціалізації значення FValue в оброблювачі події OnCreate модуля введемо код: FValue = “Неизвестный человек”;.
Тепер можна отримати доступ до даного поля зі скрипта. Спершу спробуємо виводити значення поля користувачу. Для цього в код шаблону HTML-сторінки Unit2.html треба додати після тега </table> наступний код:
<BR><BR> Здравствуйте, уважаемый <%=Adapter1.AdapterField1.DisplayText%>.
Скомпілюємо проект і розташуємо на Web-сервері файли Unit1.html, Unit2.html, Project1. dll на сервері в теці для скриптів. Запустимо Web-браузер Internet Explorer і в рядку адреси наберемо http://localhost/scripts/project1.dll. В результаті на сторінці PageProducerPage2 побачимо напис Здравствуйте, уважаемыйНеизвестный человек.