Рис. 9.6

Диалоговое окно запроса пароля

9.3 Клиентское приложение

Имеется и иной способ запросить имя и пароль пользователя - установить в true свойства LoginPrompt. Тогда перед соединением с сервером во время выполнений пользователю будет показано то же диалоговое окно, приведенное на рис. 9.6. Перед показом окна возникает событие OnGetUsername, в обработчике которого можно задать имя пользователя, показываемое в окне рис. 9.6 по умолчанию. После того как пользователь ввел в диалоговом окне информацию и щелкнул на кнопке ОК, происходит соединение с удаленным сервером и возникает событие OnLogin. В его обработчике можно проанализировать введенное пользователем имя и пароль и принять соответствующие меры, ограничивающие доступ пользователя к информации. В частности, можно передать имя и пароль удаленному серверу, на котором содержится информация о пользователях, допущенных к базе данных. Если пользователь отказался от диалога, щелкнув на кнопке Cancel, нажав Esc или закрыв окно системной кнопкой, событие OnLogin не наступает. Это обстоятельство можно использовать, как в приведенной далее реализации приложения, для принятия в этом случае соответствующих мер.

В приведенной далее реализации приложения для запроса пароля используется свойство LoginPrompt. Так что установите его в true. Но сделано это только для того, чтобы показать способы использования свойства LoginPrompt. А в целом надо сказать, что окно на рис. 9.6 конечно не является наилучшим вариантом запроса, поскольку не русифицировано. Лучше запросить пароль в обработчике события BeforeConnect, как было описано выше, но не с помощью стандартных функций, а создав собственное диалоговое окно, естественно, с русскими текстами.

Продолжим создание нашего приложения. Поместите на форму компонент Cli-entDataSet. Он будет служить в качестве клиентского набора данных. В его свойстве RemoteServer надо задать ссылку на имеющийся на форме компонент DCOMCon-nectionl. После этого откройте выпадающий список в свойстве ProviderName компонента ClientDataSetl. Вы увидите в нем имена двух провайдеров: DSPPers и DSPDep. Это те провайдеры, которые вы создали в удаленном модуле данных. Выберите из списка провайдер DSPPers, так как наше приложение должно связываться с таблицей Pers.

Фактически, основа клиентского приложения создана. Осталось разместить на форме компоненты отображения данных, настроить их и настроить набор данных. Перенесите на форму компоненты DataSource, DBNavigator, DBGrid, DBImage, DBMemo. Обычным образом DataSource связывается свойством DataSet с набором данных ClientDataSetl. Остальные данные своими свойствами DataSource связываются с DataSourcel. Кроме того, компоненты отображения данных связываются свойствами DataField с соответствующими полями: DBImage 1 с полем Photo, a DBMemo 1 - с Char act.

Займемся теперь настройкой набора данных ClientDataSetl. Вызовите Редактор Полей двойным щелчком на этом компоненте. Работа с редактором проводится так же, как при настройке других наборов данных. Правда, с учетом того, что в данном случае не срабатывает словарь, обеспечивающий русификацию и настройку полей (подобный словарь для базы данных dbP есть на диске, приложенном к книге). Так что вам надо ввести в Редакторе Полей все поля и настроить их отображение, задав, в частности, русские заголовки. Подобная процедура подробно описана в [1] и [5], так что не будем на ней останавливаться. Обычным образом также вводится вычисляемое поле Age, отображающее возраст сотрудников, исходя из их года рождения и текущего года.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Апрель
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31