Главная » Delphi » Отображение данных WebSnap

0

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

Фактически метод  отображения набора данных  в форме очень  прост. Добавьте в демонстрационное приложение новый модуль, но на сей раз создайте его как Web модуль данных, используя третью кнопку панели инструментов Internet. Это очень простой мастер, поэтому оставьте все значения установленными по умолчанию. Затем добавьте компоненты TDatasetAdapter из вкладки  WebSnap и TTable из вкладки BDE палитры компонентов. Присвойте компоненту TTable базу данных  DBDEMOS, а затем    таблицу    BioLife.   Установите   свойство   Dataset компонента   Datase- tAdapter1 в   состояние  Table1.   И,   в   заключение,   установите  свойство   Ta- ble1.Active в состояние True, чтобы  таблицу можно  было открыть. Назовите Web модуль данных BioLife и сохраните его как wdmBioLife.

НА ЗАМЕТКУ

Данное приложение использует простую таблицу BDE Paradox, но компонент TData- setAdapter способен отобразить данные любого объекта производного от  класса TDataset. Обратите внимание — это не самая хорошая идея использовать экземпля- ры    класса    TTable  в    Web-приложении    безо    всякой    поддержки    сеанса. В демонстрационном приложении это сделано только для простоты, чтобы не отвле- кать внимание от возможностей WebSnap при работе с данными.

Теперь, для разнообразия, используем для установки свойств компонентов объект Treeview (Древовидное представление). Если объект Treeview невидим, то выберите в меню View пункт Object Treeview. Выберите DatasetAdapter, щелкните правой кнопкой мыши на узле Actions и в появившемся контекстном меню выберите пункт Add All Actions. Затем  подключите компонент TTable к TAdapterDataset с помощью его свойства Dataset. Выберите узел Fields и щелкнув на нем правой кнопкой мы ши выберите в появившемся контекстном меню пункт Add All Fields. Сделайте то же самое  для TTable, подключив все поля  набора данных  к Web модулю данных.  После этого, поскольку  для операций с базами  данных  WebSnap  создает  серверы без состоя ния,  необходимо указать  первичный ключ  набора данных, чтобы  обеспечить клиен там возможность перемещения и манипулирования данными. Все указанное WebSnap сделает  автоматически, после того как будет указан первичный ключ. Для этого  выбе рите  в древовидном представлении поле  Species_No Field и добавьте значение pfInKey в его свойство ProviderFlags.

Затем добавьте в приложение обычную страницу. Сделайте ее защищенной с гене

ратором типа  TAdapterPageProducer по  имени Biolife. Сохраните модуль  как wmBioLife. Поскольку в этой  странице будут отображены данные, добавим  в раздел uses модуля wmBioLife имя модуля wdmBioLife. Теперь выберите Web модуль Bio- Life и  щелкните правой  кнопкой  мыши  на  компоненте  AdapterPageProducer.Снова щелкните правой кнопкой мыши на узле WebPageItems, расположенном непо средственно ниже  его, и в появившемся контекстном меню выберите пункт New Component и AdapterForm. Выберите AdapterForm и, щелкнув правой кнопкой мы ши, добавьте компоненты AdapterErrorList и AdapterGrid. Установите свойство Adapter обоих  компонентов в состояние DatasetAdapter. Щелкните правой кноп кой мыши на компоненте AdapterGrid и в появившемся контекстном меню выбери те пункт Add All Columns. Затем  выберите узел Actions, расположенный ниже  Data- setAdapter и, щелкнув правой кнопкой мыши, выберите пункт Add All Actions. Затем выберите узел Fields и, щелкнув правой кнопкой мыши,  добавьте все поля. Теперь все свойства установлены правильно и можно отображать данные.

Перейдите к Web модулю BioLife и дважды щелкните на компоненте AdaperPage- Producer. Появится Web дизайнер с загруженными реальными данными. Если этого не произошло,  удостоверьтесь в возможности открыть таблицу,  а также  проверьте пра вильность  установки всех  свойств   Adapter компонентов  в  DatasetAdapter. Поле Notes делает таблицу слишком  длинной, поэтому  выберите в верхней левой  панели ди зайнера компонент AdapterGrid, а в верхней правой — элемент ColNotes — и удалите его. Теперь все должно выглядеть так, как показано на рис. 23.13.

Рис. 23.13. Таблица  BioLife, представленная компонентом TAdapterPageProducer в окне Web дизайнера. Таблица  HTML создана компонентом TDatasetAdapter

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

Конечно, простой просмотр данных  не очень  полезен. В реальном приложении, вероятно, понадобится работать с отдельными записями. Естественно, в WebSnap  этопредусмотрено. Перейдите  в  Web дизайнер и  выберите  компонент  AdapterGrid. Щелкните  на  нем  правой  кнопкой  мыши   и  добавьте  адаптер  AdapterCommand Column. Затем  щелкните правой кнопкой мыши на нем и выберите команды De- leteRow, EditRow, BrowseRow и NewRow, как показано на рис. 23.14.

Рис. 23.16. Страница BioLifeEdit со всеми полями и действиями в окне

Web дизайнераНА ЗАМЕТКУ

В принципе, можно было обеспечить представление и поля Notes. По умолчанию, ко- гда страница находится в режиме редактирования, для него используется элемент управления TextArea, небольшего размера и не обеспечивающий перенос текста по словам. Можно выбрать компонент FldNotes и откорректировать его свойства Tex- tAreaWrap, DisplayRows и DisplayWidth в соответствии с конкретными условиями.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии