Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.04 c
1-1168119506
BOB16
2007-01-07 00:38
2007.02.25
вытащить Title у системного hint-окошка


1-1167811479
alex_dorin
2007-01-03 11:04
2007.02.25
midas - нескольких серверов приложений с защитой на сервере


6-1158428475
kernel
2006-09-16 21:41
2007.02.25
Console&amp;Socket


4-1161077068
grasshopper
2006-10-17 13:24
2007.02.25
Вновь про WM_QUERYENDSESSION + tray


4-1151045297
novill
2006-06-23 10:48
2007.02.25
Не могу остановить свой сервис





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский