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

Вниз

HELP   Найти похожие ветки 

 
Frosja   (2007-02-02 10:56) [0]

Здравствуйте уважаемые мастера !
У меня, в решении моей задачи, возникла проблема.
Она заключается в следующем:
Я создаю приложение, расчета льгот. Все не чего. Тока остановился на казалось бы совершенно простой задаче. (Остановился потому, что люблю все делать ступенчато. А данная проблема остановила весь процесс работы. :o) ).
Так вот, Во первых в моем проекте в первую очередь создается форма “Авторизации”.
Которая после того как убедиться в праве пользователя работать с данной программой, вызывает форму MyMDIForm.
А после форма “Авторизации” должна выгрузится.
Да чуть не забыл, при создании  MyMDIForm, использую: constructor Create(Aowner: Tcomponent; UID: Integer); overload;
UID- USER ID, т.е. помимо всего я еще передаю ID пользователя.

Проблема:

Application.Initialize;
Application.CreateForm(TfrmLogin, frmLogin);
Application.Run;
<.CODE>

Когда я выгружаю форму “Авторизации”, выгружается и форма MyMDIForm.
Осмелюсь предположить, что Я выгружаю Application.

Если поступить так:

Application.Initialize;
Application.CreateForm(TMyMDIForm, MyMDIForm);
Application.CreateForm(TfrmLogin, frmLogin);
Application.Run;
<.CODE>

и

frmLogin при Create сделать ShowModal, тогда Создается MyMDIForm, и по вех нее frmLogin.

“Авторизуюсь”, создается ЕЩЕ ОДНА MyMDIForm, а frmLogin выгружается как и необходимо. Но тогда получается 2-ве MyMDIForm, а мне это не нужно :o)…
Мне то, все равно необходимо передать UID….. А получается, что MyMDIForm уже создана до “Авторизации”.


procedure TfrmLogin.TBtnOKClick(Sender: TObject);
begin
 ….
  MyMDIForm:= T MyMDIForm(Application, UID);
  frmLogin.Close;
 …..
end;

procedure TfrmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;


Необходимо, чтоб при запуске приложения вначале создалась фора frmLogin, потом после “Авторизации”, создалась форма MyMDIForm (передовая UID), потом frmLogin выгрузилась….. !

Возможно задача очень проста. Уж простите если, что не досмотрел просто уже бьюсь 2- часа как остолоп….. :o(

Спасибо за помощь.!


 
Elen ©   (2007-02-02 11:05) [1]


>  Во первых в моем проекте в первую очередь создается форма
> “Авторизации”.
> Которая после того как убедиться в праве пользователя работать
> с данной программой, вызывает форму MyMDIForm.
> А после форма “Авторизации” должна выгрузится.

Что пользователь должен ввести в авторизацию? Если просто пароль то можно использовать InputBox


 
alien1769 ©   (2007-02-02 11:08) [2]

Шо, опять. То Манюня то Frosja


 
Elen ©   (2007-02-02 11:12) [3]

Удалено модератором
Примечание: Флудить завязываем


 
Правильный Вася   (2007-02-02 11:14) [4]

а так
 Application.ShowMainForm:=False;
 Application.CreateForm(TXXXDataModule, XXXDataModule);
 if not Application.Terminated then begin
   Application.CreateForm(TfrmMain, frmMain);
   Application.ShowMainForm:=True;
 end;
 Application.Run;

и где-нибудь в секции инициализации датамодуля поставь создание логиноформы, запрос и ее закрытие


 
Frosja   (2007-02-02 11:17) [5]


> alien1769 ©   (02.02.07 11:08) [2]

???

Дело в том, что пользоватьль вводит логи и пароль, после чего производится перебор по таблице USER (MSSQL), после того как мы удостоверились что такие login и password существуют возвращаем UID, и передаем форме MyMDIForm,
(форма создается берет UID, сопоставляет сопоставляет с таблицей ROLES и содает или не сосдает те или иные компоненты... Ну это в принципе другая задача)
После frmLogin выгружается....


 
Desdechado ©   (2007-02-02 11:17) [6]

А зачем логин в MDI-форме спрашивать?


 
Olivetti   (2007-02-02 11:18) [7]

Application.Initialize;
Application.CreateForm(TfrmLogin, frmLogin);
Application.Run;


{Main Application}

Application.Initialize;
frmLogin :=  TfrmLogin.Create(nil);
try
 frmLogin.ShowModal;
finally
 FreeAndNil(frmLogin);
end;
Application.CreateForm(TMyMDIForm, MyMDIForm);
Application.Run;

{frmLogin}

procedure TfrmLogin.TBtnOKClick(Sender: TObject);
begin
 if (<Wrong password>)  then Abort;
end;


 
Frosja   (2007-02-02 11:18) [8]


> Правильный Вася   (02.02.07 11:14) [4]

Ща попробую....


 
Frosja   (2007-02-02 11:20) [9]


> Desdechado ©   (02.02.07 11:17) [6]

Не.. Не..
MyMDIForm- это MDIForm,
а frmLogin- это Normal /О как. :o)/


 
Elen ©   (2007-02-02 11:20) [10]


> Frosja

Так в чем проблема? Создавай вторую форму не в инициализации проекта а внутри первой формы типа :

program Project1;

uses
 Forms,
 Unit1 in "Unit1.pas" {Form1},
 Unit2 in "Unit2.pas" {Form2};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);

 Application.Run;

end.

................................................
procedure TForm1.Button1Click(Sender: TObject);
begin
вводим пароль и проверяем его если да то :
 Application.CreateForm(TForm2, Form2);
Form2.Show;form1.hide;
end;



 
evvcom ©   (2007-02-02 11:23) [11]

> [0] Frosja   (02.02.07 10:56)

Вся проблема в том, что первая же форма, созданная в Application.CreateForm становится главной. Создай Login форму через TForm.Create.


 
Elen ©   (2007-02-02 11:23) [12]


> Frosja

И зачем обязательно MDI?


 
Frosja   (2007-02-02 11:25) [13]


> Elen ©   (02.02.07 11:20) [10]

Потом получится, что я создам "3-ю форму" Form1 и выгужу форму Form1 которая была создана первой... Не так длинно...
Я предержуюсь принципа, то, что мне необходимо при создании Form1 (в вашем случае) передать еще и параметр....!!!!!
Create(Application, UID)...
А по вашему с каким параметром создастса первоночально форма Form1.. ?


 
Frosja   (2007-02-02 11:26) [14]


> evvcom ©   (02.02.07 11:23) [11]

Во и вам спасибо за идейку!!! :o)


 
evvcom ©   (2007-02-02 11:29) [15]

> [14] Frosja   (02.02.07 11:26)

Так ее тебе еще
> [7] Olivetti   (02.02.07 11:18)
подкинул, но пост, видимо, попал в игнор из-за отсутствия словесного описания?


 
Elen ©   (2007-02-02 11:31) [16]


> А по вашему с каким параметром создастса первоночально форма
> Form1..

А по-моему я бы создала просто форму (неглавную) при креации главной. На этой форме спросила б эдентификацию, передала б ее в переменную заранее предусмотренную в главной форме и избавилась потом от формы-пароля.


 
Frosja   (2007-02-02 11:34) [17]


> evvcom ©   (02.02.07 11:29) [15]

Да не видно.. норм...
А под другим логином наверно, чтоб если толпа критиковать начнет, тоже можно было покритиковать.. :o))))
Не че правильно я тож так делаю.... :o)))


 
Frosja   (2007-02-02 11:35) [18]


> Frosja   (02.02.07 11:34) [17]

Всмысле.. Вижу...


 
evvcom ©   (2007-02-02 11:37) [19]

> [17] Frosja   (02.02.07 11:34)
> А под другим логином наверно

Может быть, но я всегда под одним логином.

> Не че правильно я тож так делаю....

Хозяин-барин. Я так не делаю.


 
Frosja   (2007-02-02 11:38) [20]

Удалено модератором
Примечание: Флудить завязываем


 
Frosja   (2007-02-02 11:41) [21]


> Elen ©   (02.02.07 11:31) [16]


> Frosja   (02.02.07 11:38) [20]

Здесь повторюсь важен сам принцеп:

unit uMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, ADODB;

type
 TfrmMain = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormActivate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   constructor Create(AOwenr: TComponent; GUID: TGUID); overload;
 end;

var
 frmMain: TfrmMain;
 UID: TGUID;

implementation

uses ComObj, uDM;

{$R *.dfm}

constructor TfrmMain.Create(AOwenr: TComponent; GUID: TGUID);
begin
  inherited Create(AOwenr);
  UID:= GUID;
end;


 
Olivetti   (2007-02-02 11:47) [22]

А под другим логином наверно, чтоб если толпа критиковать начнет

Не верно. Это мой логин, типа. Начинай критиковать.


 
Elen ©   (2007-02-02 11:55) [23]


> Frosja   (02.02.07 11:38) [20]

Мыслепутанницабезпричины.


> Здесь повторюсь важен сам принцеп:

Какой? Накормить и напоить зверя? В одной проге я сделала так : пользователь вводит только пароль, а логин берется из GetUserName. И никаких доп.форм.


 
Frosja   (2007-02-02 11:59) [24]


> Elen ©   (02.02.07 11:55) [23]

Скажем как тогда для каждого пользователя в программе, распределить что можно, а что нельзя, а кому вообще все можно. Как?
Скажем профиль заблокирован. Что тогда?


 
DiamondShark ©   (2007-02-02 12:01) [25]

Фрося, ты блондинка?


 
evvcom ©   (2007-02-02 12:02) [26]

> [24] Frosja   (02.02.07 11:59)
> Скажем профиль заблокирован. Что тогда?

Тогда ему ничего не будет доступно :o)
Возложи это на сервер.


 
Elen ©   (2007-02-02 12:03) [27]


>  Как?

Организовать БД с профилями пользователей.


>  распределить что можно, а что нельзя

А что нужно?


> Скажем профиль заблокирован. Что тогда?

Предложить дать админу взятку и Выйти из проги :)


 
Elen ©   (2007-02-02 12:07) [28]

Удалено модератором
Примечание: Флудить завязываем


 
мжмж   (2007-02-02 12:09) [29]


> Elen ©   (02.02.07 12:03) [27]
>
>
> >  Как?
>
> Организовать БД с профилями пользователей.

Ага изучить еще для решения данной задачи (например Windows Script Host), чтоб он кидал в БД пользователя прирегистрации...
Или создовать ДЛЯ КАЖДОГО пользавателя ПРОГРАММЫ, профиль...?! Ги..


 
Elen ©   (2007-02-02 12:12) [30]


> Или создовать ДЛЯ КАЖДОГО пользавателя ПРОГРАММЫ, профиль.
> ..?! Ги..

Почему бы нет? Разве трудно?


 
Frosja   (2007-02-02 12:39) [31]

Удалено модератором
Примечание: Личная переписка


 
NLex   (2007-02-02 14:35) [32]

Тебе необходима базовая форома:
http://www.delphimaster.ru/articles/parentform/index.html



Страницы: 1 вся ветка

Текущий архив: 2007.02.25;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.044 c
15-1170156228
Calibr
2007-01-30 14:23
2007.02.25
Вопрос по HTML?


3-1164963356
zdm
2006-12-01 11:55
2007.02.25
DEL FROM DBF


15-1170533431
Norfolk
2007-02-03 23:10
2007.02.25
Создание БД Paradox в Delphi 2006


4-1161024235
spok
2006-10-16 22:43
2007.02.25
Процесс от имени другого юзера - как? (почему не работает?)


15-1170269226
RedBanner
2007-01-31 21:47
2007.02.25
Скрытая работа программы