Наши преимущества

EhLib Exception

tarakan19832

Турист
Credits
0
Здравствуйте. У меня проблема с компонентом DbGridEh.
У меня программа с авторизацией, т.е. сначала показывается форма FmLogin, а после успешной авторизации попадаем в главную форму FmMain. Так вот если авторизоваться, и потом закрыть программу, то все нормально, а вот если отменить авторизацию или просто закрыть форму FmLogin – то получаю Exception. В версии 8.1 этого не было, началось с 8.2 и на 9 версии тоже самое. Если убрать сетку с главной формы, то все в порядке. Пример прилагаю.
Как увидеть ссылки? | How to see hidden links?
 
program Logon;
uses
Forms,
FormMain in 'FormMain.pas' {fmMain},
FormLogon in 'FormLogon.pas' {fmLogon};

{$R *.res}

var
fmLogon: TfmLogon;
LogonOK: Boolean;
begin
Application.Initialize;
fmLogon := TfmLogon.Create( nil );
LogonOK := fmLogon.ShowModal = mrOk;
fmLogon.Free;
if LogonOK then begin
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end;
end.

Попробуй так, например...
Т.е. сделай авторизацию до создания главной формы
 
Последнее редактирование модератором:
Я тоже так хочу переделать, но пока это невозможно, у меня при авторизации с формы login на FmMain меняются много контролов, если так то придется переписывать всю процедуру авторизации.
 
Какие контролы могут меняться если суть авторитизации дать доступ или нет?
 
Я тоже так хочу переделать, но пока это невозможно, у меня при авторизации с формы login на FmMain меняются много контролов, если так то придется переписывать всю процедуру авторизации.

Поддерживаю предыдущего оратора.
Если стоит такая задача, что в зависимости от прав доступа разрешать те или иные функции программы, то у афтара неверная реализация.
Изучи TActionList. Там в событии Update можно разрешать, запрещать, показывать, скрывать - в общем, что хочешь делать в зависимости от условий.
 
Какие контролы могут меняться если суть авторитизации дать доступ или нет?
При успешной авторизации на статус бар главной формы наноситься текущий пользователь, права пользователя, версия клиента программы, текущая организация, текущее подразделение организации, расположение БД и т.п. Я согласен, что это надо было хранить в глобальных переменных и потом на formcreate главной формы их менять, но начиналось это делать на EhLib 8.1, там такого не наблюдалось и все работало нормально, появилась необходимость обновить компонент и теперь такая фигня.
Просто где-то в недрах компонента неправильно уничтожаются классы Ehlib, думал может кто подскажет, что поменять в исходниках компоненты, может там проблема в одной - двух строчках, а теперь придется переписывать всю авторизацию.
 
Переписать авторитизацию

Да и авторитизация у тебя не правильно если это, что ты дал как пример
У тебя создаются все формы, а должны создаваться после прохождения

Вверху была пример, его доработать надо
 
При успешной авторизации на статус бар главной формы наноситься текущий пользователь, права пользователя, версия клиента программы, текущая организация, текущее подразделение организации, расположение БД и т.п.

И все это делается в модуле авторизации?
Какой славный глюкодром...
 
да тут не в модуле дело. Просто это делать правильнее через call-back функцию. Хотя если модуль гл.формы и авторизации в пределах одного приложения - все будет нормально и так.

Добавлено через 19 минут


Бывают такие глюки не только с эхлибом. Единственное, что можно посоветовать - освобождать главную форму перед завершением работы. Т.е. в вашем случае что-то вроде этого:

Application.CreateForm(TFmMain, FmMain);
Application.CreateForm(TFmLogin, FmLogin);
if FmLogin.ShowModal = mrCancel then
begin
FmMain.Free;
Application.Terminate;
end else
Application.Run;

Если не поможет, тогда уже менять версию компонента))

Зачем создавать главную форму до авторитизации?
 
Прошел авторизацию - создал главную форму - расположил все компоненты как надо - отобразил
 
Прошел авторизацию - создал главную форму - расположил все компоненты как надо - отобразил

Ну это простейший случай. Например, у меня на главной (назовем ее условно) форме располагается главный FDConnection.
При авторизации у меня как раз происходит управление соединением с БД. Поэтому главная форма обязана существовать до авторизации.
 
Ну это простейший случай. Например, у меня на главной (назовем ее условно) форме располагается главный FDConnection.
При авторизации у меня как раз происходит управление соединением с БД. Поэтому главная форма обязана существовать до авторизации.

Connection (точное название не помню DataSoruce может, давно не работа) на форму не должны располагаться

Смотри в сторону DataMOdule раньше такая штука еще была, типо формы для соединений
 
Верх