Форум: "Базы";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизПравильно запустить форму для проверки пароля Найти похожие ветки
← →
Vovan123+ (2007-01-09 08:12) [0]День добрый. Вопрос по-моему не сложный, но сообразить чего-то не могу.
Вообщем нужно вывести форму для проверки пароля до отображения гл. формы. На ней проверка доступа (сами компонеты Tdatabase, проставляются параметры USER NAME и PASSWORD + connect). Проблема в следующем. Призагрузке гл. формы включается connect и выдается ошибка. Если сделать форму для пароля главной, то при закрытии ее закроется и приложение. Пробовал на событие Create гл. формы создавать программно форму для паролей через
frmLogin := TfrmLogin.Create(nil);
frmLogin.Showmodal;
, a на onShow базы коннектить
Вроди бы работает, но после закрытия приложения ехе висит процессах. Нехорошо это. Может подскажете как грамотно убить frmLogin. Может вообще для проблемы грамотное решение существует. Специальные компоненты использовать неохота (RXLogindialog например). К стилю приложения не подходят.
Спасибо заранее.
← →
Megabyte © (2007-01-09 10:07) [1]Стоп. Ты объясни, нафига для связи с MSSQL используешь стандартные компоненты?
Зачем изобретать велосипед? Включи свойство LoginPrompt у ADOConnection и не надо никакой доп. формы не надо...
← →
Плохиш © (2007-01-09 11:00) [2]
> Vovan123+ (09.01.07 08:12)
Один из вариантов:
dpr
.....
begin
Application.Initialize;
Application.CreateForm(TDM, DM);
if DM.Connected then
begin
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end;
end.
В OnCreate модуля данных TDM производишь подключение к бд с использованием своей формы. Новое свойство Connected возвращает TRUE, если подключение к бд установлено.
← →
Vovan123+ (2007-01-09 11:52) [3]Megabyt-y Проблема в том что у меня три базы и три раза прийдется вводить пароль через логин промт? я пробовал после первого коннекта из параметров первой базы копировать пароль и логин и вставлять в 2 и3, но он пустые значения вместо строк выдергивает и через , пути к базам в одном компонете, но не получилось, может неправильно прописывал?
Плохишу. Спасибо. Сейчас попробую. Компонеты database на DM прийдется размещать. После закрытия DM коннекты не исчезнут? Ну да ладно самый простой способ узнать - попробовать. Спасибо. Кстати если это один из вариантов может еще какой-нибудь подскажешь?
← →
Андреевич (2007-01-09 12:50) [4]Обычно, авторизацию запрашивают при создании модуля данных OnCreate. Если баз три, то три зарпоса - это логично. Другое дело, если пароли одинаковые. Но если хочешь своё окошко для ввода пароля, то:
1) Создать модуль данных (первый в списке создания форм), не открывать сессию, наборы данных
2) В событии OnCreate модуля данных: динамически создать форму для запроса пароля. Пароль записать в соответствующие свойства сессий. Открыть сессии. Удалить (Free) форму для запроса пароля.
3) Создать главную форму приложения (вторая в списке автосоздаваемых форм).
Не забудь try...except при открытии сессий на случай неверного пароля.
← →
Vovan123+ (2007-01-09 13:54) [5]Андреевич это все понятно. Пароль конечно один. Примерно так я и сделал. Форму для пароля я создаю на OnCreate динамически. создавал через frmLogin := TfrmLogin.Create(nil); и через Application.CreateForm(TfrmLogin, frmLogin);. Открываю через ShowModal. иначе гл форма открывается сразу. Проблема по моему правильно убить вот эту форму с паролем. Я в этом не очень силен. Пробовал и Hide с Free и Action:=caFree с FrmLogin:=nil;
После закрытия проги она в процессах остается.
← →
Плохиш © (2007-01-09 14:08) [6]
...
frmLogin := TfrmLogin.Create(nil);
try
if frmLogin.ShowModal = mrOk then
begin
// Произвести подключение к базе...
end;
finally
frmLogin.Release;
end;
...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c