Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

Как закрыть программу в окне авторизации?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.015 c
2-1276678632
Desyatnik
2010-06-16 12:57
2010.09.12
Динамические запросы


2-1276338216
forNeXt-13
2010-06-12 14:23
2010.09.12
Как сделать ValueListEditor в возможностью выбора


15-1276427298
Я всегда говорил!
2010-06-13 15:08
2010.09.12
Бывают же наглые работодатели


2-1276788915
RET
2010-06-17 19:35
2010.09.12
Помогите с передачей строкового аргумента


4-1240162200
alex870
2009-04-19 21:30
2010.09.12
Какой файл проигрывает Windows Media Player