Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1276760149
john-s
2010-06-17 11:35
2010.09.12
Не могу добавить данные типа float в mysql


15-1276424776
George
2010-06-13 14:26
2010.09.12
Шифрование на Delphi и PHP


15-1276600467
Правильный$Вася
2010-06-15 15:14
2010.09.12
странный образ диска


2-1274820470
HRustBB
2010-05-26 00:47
2010.09.12
Как в TreeView определить область видимости


2-1276848535
LDV
2010-06-18 12:08
2010.09.12
проверка существования поля в таблицах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский