Форум: "Прочее";
Текущий архив: 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.044 c