Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
ВнизКак закрыть программу в окне авторизации? Найти похожие ветки
← →
ixen © (2010-06-15 17:15) [0]Здравствуйте! В своей программе у меня сначала выходит окно авторизации пользователя и кнопки ok и отмена. если Пользователь нажимает отмена. То я закрываю программу в процедре CreateForm главной формы при помощи
application.Terminate;
. При этом заметно, что главная форма создается и тут же закрывается, т.е. заметно некое мелькание формы. Как закрыть программу без этого мелькания? Форма авторизации создается динамически и вызывается в процедуре CreateForm главной формы. Конечно можно сделать авторизацию в разделе Program до вызова создания главной формы, но у меня компоненты базы данных лежат на главной форме и поэтому я весь код авторизации поместил в CreateForm главной формы. А сейчас переносить все из главной формы в data module не хочется, хотя придется.. если по другому не получится...
← →
turbouser © (2010-06-15 17:25) [1]
> ixen © (15.06.10 17:15)
1) Использовать TDataModule для
> компоненты базы данных
2) Создавать датамодуль до создания всех форм (можно просто поместить в самый верх в опциях проекта или прямо в dpr)
3) Показывать диалог логина после создания датамодуля и до создания формы
← →
12 © (2010-06-15 17:35) [2]не знаю как -кто, я делаю так.
(заодно покритикуйте, если не так что-то)
зарегился в специальной форме, та создает главную и передает ей коннекшен и все атрибуты.
плюс в том, что можно в любой момент еще раз вызвать процедуру регистрации и >> зарегился в специальной форме, та создает главную и передает ей коннекшен.
в одной программе 2 окна от разных юзеров. 3,4 - сколько знаем логинов :)
LoginUserId := qLogin.FieldByName("Id").AsInteger;
LoginUserName := qLogin.FieldByName("Name").AsString;
fMain := TfrmMain.Create(nil);
fMain.InitForm(cntMain, LoginUserId, LoginUserName);
frmLogin.Hide;
Procedure InitMain(var AConnect:tAdoConnection; IdUser:integer; NameUser:string);
begin
if frmMain = nil then frmMain := TfrmMain.Create(Application);
frmMain.cntTest := AConnect;
frmMain.cntMain := AConnect;
frmMain.MainUserId := IdUser;
frmMain.MainUserName := NameUser;
frmMain.Show;
а потом
frmLogin.Show;
и заходим еще раз, под другим юзером во втором окне
или совсем выходим, и заходим под другим в новом окне
KillMe := true;
uLogin.Kill;
← →
Jeer © (2010-06-15 17:39) [3]См. [1]
← →
Jeer © (2010-06-15 17:44) [4]
> Как закрыть программу без этого мелькания?
Как вариант, сделай главную *.WindowState := Minimized;
← →
KilkennyCat © (2010-06-15 18:37) [5]application.run не должен выполняться, тогда и форма не мигнет.
program Project;
uses
Forms,
main in "main.pas" {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
if Form1.FCanrun then Application.Run else Application.Terminate;;
end.
.........
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
Fcanrun :Boolean;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage("Фиг Вам!");
Fcanrun := False;
end;
← →
Юрий Зотов © (2010-06-15 18:54) [6]Зачем создавать главную форму, если она не будет нужна? Это только потери времени, и нередко немаленькие.
Делаем TLoginForm, в AutoCreate не включаем. В DPR пишем:
begin
Application.Initialize;
with TLoginForm.Create(nil) do
try
if ShowModal <> mrOk then // авторизация не пройдена
Exit
finally
Free
end;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
← →
KilkennyCat © (2010-06-15 18:59) [7]
> Юрий Зотов © (15.06.10 18:54) [6]
он просто уже в оnCreate главной прописал кучу кода.
← →
Anatoly Podgoretsky © (2010-06-15 19:28) [8]> KilkennyCat (15.06.2010 18:59:07) [7]
Пусть выписывает назад.
← →
ixen © (2010-06-15 19:28) [9]
> Зачем создавать главную форму, если она не будет нужна?
на главной форме компоненты базы данных, которые использует форма авторизации.
> он просто уже в оnCreate главной прописал кучу кода.
действительно... кода там не мало...
← →
ixen © (2010-06-15 19:30) [10]
> KilkennyCat © (15.06.10 18:37) [5]
так я наверно и сделаю
← →
turbouser © (2010-06-15 19:40) [11]
> ixen © (15.06.10 19:30) [10]
>
> так я наверно и сделаю
>
Вместо того, что бы сделать как полагается, прикручивать очередные костыли?
Ну, дело хозяйское.
← →
ixen © (2010-06-15 19:58) [12]
> Вместо того, что бы сделать как полагается, прикручивать
> очередные костыли?
дело в том что программа практически готова.. и из за этой мелочи переписывать половину программы... хотя может сделаю и через дата модуль.. всем спасибо..
← →
Anatoly Podgoretsky © (2010-06-15 20:13) [13]> ixen (15.06.2010 19:58:12) [12]
Переписывать и не половину, а сколько надо. Лучше переписать все нафиг.
← →
Медвежонок Пятачок © (2010-06-15 22:57) [14]Зачем создавать главную форму, если она не будет нужна? Это только потери времени, и нередко немаленькие.
Форму главную создавать нужно.
А вот инициализировать в ней что -либо до логина - не нужно.
При этом юзер, запустивший программу видит не просто логин бокс, фик знает какому приложению принадлежащий, а видит логин бокс поверх узнаваемого майн виндоу.
Хотя можно конечно и не париться, и всегда думать, что у юзера в пользовании всего одна программа - ваша. И что юзер, увидев одинокий логин бокс сразу понимает, что и кто именно от него хочет.
← →
turbouser © (2010-06-15 23:05) [15]
> Медвежонок Пятачок © (15.06.10 22:57) [14]
> И что юзер, увидев одинокий логин бокс сразу понимает, что
> и кто именно от него хочет.
В моих программах - понимает. Там не безликий диалог. Достаточно информативный.
А вот создавать главную форму, доступа к которой не будет без авторизации - нет смысла.
← →
Медвежонок Пятачок © (2010-06-15 23:08) [16]В моих программах - понимает.
Ну вот оно. О чем я и говорил.
"У юзера никаких программ нет, есть только "моя" и в ней он все понимает"
← →
turbouser © (2010-06-15 23:11) [17]
> Медвежонок Пятачок © (15.06.10 23:08) [16]
> Ну вот оно. О чем я и говорил.
Мда :)
Чукча писатель?
← →
Медвежонок Пятачок © (2010-06-15 23:13) [18]Не надо мдакать.
Чукча сам не читатель.
Чукча продолжает думать, что кроме него никто программ для его юзера не пишет.
← →
turbouser © (2010-06-15 23:16) [19]
> Медвежонок Пятачок © (15.06.10 23:13) [18]
Забавно.
> продолжает думать, что кроме него никто программ для его
> юзера не пишет.
Откуда такой замечательный вывод?
← →
Медвежонок Пятачок © (2010-06-15 23:18) [20]Откуда такой замечательный вывод?
Скажите лучше откуда у вас такой вывод.
Я пока вижу единственный аргумент:
"Мой юзер (два-три моих юзера) - понимают, значит и все остальные такие"
← →
turbouser © (2010-06-15 23:26) [21]
> Медвежонок Пятачок © (15.06.10 23:18) [20]
Ок. Для примера - запускаем 1С 7.7 - что видим? Юзер это не узнает? У меня примерно так же. Информации в диалоге авторизации достаточно, что бы юзер не запутался.
← →
turbouser © (2010-06-15 23:27) [22]
> Медвежонок Пятачок © (15.06.10 23:18) [20]
> "Мой юзер (два-три моих юзера) - понимают, значит и все
> остальные такие"
Бред
← →
Медвежонок Пятачок © (2010-06-15 23:32) [23]Информации в диалоге авторизации достаточно, что бы юзер не запутался.
"Моему юзеру (двум-трем моим юзерам) достаточно, значит и всем
остальным достаточно"
← →
turbouser © (2010-06-15 23:34) [24]
> Медвежонок Пятачок © (15.06.10 23:32) [23]
Толсто :)
Чтож, удачи ;)
← →
Медвежонок Пятачок © (2010-06-15 23:35) [25]И это все?
Жидковато.
← →
ixen © (2010-06-16 06:53) [26]как можно запутаться от какой программы окно авторизации, ведь в этом окне можно написать название программы и вставить логотип программы... а от главной формы толку мало, т.к. если прога MDI то они практически все одинаковые... серое окно и в верху меню... так что создавать главную форму до авторизации действительно не целесообразно и занимает дополнительные ресурсы и время на его создание...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c