|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.04.2011, 08:05 | #1 |
Регистрация: 19.12.2010
Сообщений: 6
|
Замена диалога запроса имени пользователя
Здравствуйте, уважаемые форумчане!
Прошу подсобить в моём обучении. На данный момент изучаю делфи, и поэтому возникли вопросы, которых совсем чуть-чуть. Уверен, что вы мне поможете. Вообщем, я изучаю сей документ, в котором мне не ясны некоторые моменты, а точнее - порядок действий. Исходя из содержания документа - я должен создать новое приложение, добавить на него компонент IBDatabase (база у меня на Firebird), и поместить туда компонент IBTransaction. Для того, чтобы активировать таблицу в "теле" программы, судя по мануалу нужно прописать следующий код: Код:
Пункт следующий... После активации базы, мануал предлагает нам создать собственный диалог авторизации в базе... Цитирую: Код:
Прошу отнестись с пониманием. Я правда пытался вникнуть, и юзал поиск, но данные манипуляции не обвенчались успехом. С уважением. |
30.04.2011, 19:14 | #2 | |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
В упомянутом мануале есть более простой способ соединения с базой:
Цитата:
Создать новую форму (File -> New -> Form). Свойство Name = DBLoginDialog; Cвойство BorderStyle = bsDialog. Кинуть на форму два TLabel и два TEdit; И кнопку BitBtn, в свойстве Kind указать bkОК. Открыть через меню Progect -> Options. Закладка Forms. Убрать эту новую форму из списка Auto-create forms. Выделить на форме компонент IBDatabase1. Перейти в Object Inspector на закладку Events. Щелкнуть два раза в правой колонки против события OnLogin. В тексте программы появиться заготовка процедуры обработки события, которая приведена в цитате. Скопировать в тело процедуры пример и заменить: Код:
Последний раз редактировалось Прик; 30.04.2011 в 19:45. |
|
01.05.2011, 19:48 | #3 |
Регистрация: 01.05.2011
Сообщений: 6
|
Уточните, пожалуйста, название формы "DBLoginDialog" имеет принципиальное значение в данном случае?
И во втором варианте нужно ли прописывать "IBDatabase1.Connected:=True"? Последний раз редактировалось raf999; 01.05.2011 в 20:04. |
01.05.2011, 20:02 | #4 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Никакого значения имя формы не имеет, называйте как хотите.
Свойство формы Name. |
01.05.2011, 22:32 | #5 |
Регистрация: 01.05.2011
Сообщений: 6
|
И все же не могу понять что делаю не так.
Когда убираю создание формы из auto-create то форма вообще не открывается, просто проигрывается в холостую. Когда в auto-create создание формы прописано окно открывается, но нажатие на кнопку ок никаких результатов не дает, никаких сообщений Код прописан как на примере: Код:
Последний раз редактировалось Stilet; 06.05.2011 в 07:23. |
01.05.2011, 22:56 | #6 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
В примере недвусмысленно показано, что диалог надо создавать в главной форме (Form1), а не в том же диалоге. Сам себя диалог создавать не может.
И пож., будьте внимательны. В посте #2 сказано что и как делать. Этот диалог создается в той форме, на которой расположен компонент IBDatabase1. Теорию почитать бы надо. |
02.05.2011, 04:16 | #7 |
Регистрация: 01.05.2011
Сообщений: 6
|
Да, действительно как-то не обратил на это внимание.
Теперь все стало на свое место. Большое спасибо за помощь! |
02.05.2011, 16:30 | #8 |
Регистрация: 19.12.2010
Сообщений: 6
|
Всем спасибо за ответы.
Поясните, что я делаю не так... Я открываю делфи, создаётся новый проект, с уже готовой формой (form1). Кликаю на File -> New -> Form. Создаётся form2, на которой я начинаю формировать диалог: Свойство Name = DBLoginDialog; Cвойство BorderStyle = bsDialog. Кидаю на форму два TLabel и два TEdit; И кнопку BitBtn, в свойстве Kind указываю bkОК. Захожу в Project -> Options. Закладка Forms. Убираю новую форму (DBLoginDialog) из списка Auto-create forms. Затем, перехожу на form1, и кидаю на неё компонент IBDatabase. Открываю свойства, и в эвенте OnLogin пишу var dlg: TDBLoginDialog; // созданный вами диалог begin dlg:=TDBLoginDialog.Create(Applicat ion); if dlg.ModalResult = mrOK then with LoginParams do begin Values['USER_NAME'] := dlg.Edit1.Text; Values['PASSWORD'] := dlg.Edit2.Text; // другие параметры, например role_name, lc_ctype и т.д., если необходимо end; dlg.Free; IBDatabase1.Connected:=True; Значит, теперь хочу, чтобы процедура выполнялась при создании Form1. В свойство Form1 - OnCreate пишу - IBDatabase1Login (пробовал также, TForm1.IBDatabase1Login - Delphi ругается на not enough actual parameters. Что я делаю не так? Полный листинг программы: Код:
|
02.05.2011, 17:30 | #9 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Две ошибки найдены.
Код:
Код:
Более никакие телодвижения не нужны (тем более TForm1.IBDatabase1Login). Это событие (OnLogin) автоматически срабатывает при соединении с БД. Т.е. когда происходит присвоение: Код:
Последний раз редактировалось Прик; 02.05.2011 в 17:34. |
05.05.2011, 17:25 | #10 |
Регистрация: 01.05.2011
Сообщений: 6
|
Народ, подскажите, ни у кого не возникает ошибки при закрытии формы диалога методом free? Структуру диалога немного другую использую, но судя по логике если ошибка у меня возникает и тут она должна быть.
Есть предположение, что ошибка возникает из-за того, что когда делается запись в коде, типа Values['USER_NAME'] := dlg.Edit1.Text, то реально переписывается указатель и при очистке методом free loginParams.Values['USER_NAME'] реально смотрит на адрес памяти, куда указывал объект dlg.edit1.text. Скажите у меня у одного такая ошибка и правильные ли предположения? При закрытии окна диалога .close все нормально |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запуск программы от имени другого пользователя... | EraM | Общие вопросы Delphi | 3 | 12.05.2011 11:07 |
Запрашивание имени пользователя и сохранение конфигурации | Viresta | Общие вопросы Delphi | 1 | 27.12.2010 01:05 |
При установке ловушки на клавиатуру зависают приложения, запущенные от имени другого пользователя. | _Lamer | Visual C++ | 2 | 22.11.2010 10:01 |
Определение имени пользователя из сервиса | Garacio_cain | Общие вопросы Delphi | 2 | 10.12.2009 17:17 |
Прочесс без имени пользователя | delphin100 | Общие вопросы Delphi | 0 | 29.10.2008 06:45 |