Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Внизconstructor Найти похожие ветки
← →
wwwrr (2007-03-09 10:40) [0]
(******************************************************************************)
program My;
(******************************************************************************)
uses
Forms,
uMain in "uMain.pas" {frmMain};
type
TApp = class(TApplication)
private
{ Private declarations }
procedure prApplication(GUID: TGUID);
public
{ Public declarations }
constructor CreateForm(InstanceClass: TComponentClass; var Reference; GUID: TGUID); overload;
end;
var
App: TApp;
{$R *.res}
constructor TApp.CreateForm(InstanceClass: TComponentClass; var Reference; GUID: TGUID);
begin
inherited CreateForm(InstanceClass, Reference);
Tag:= Integer(PChar(GUIDToString(GUID))^);
end;
procedure TApp.prApplication(GUID: TGUID);
begin
with Application do
begin
Initialize;
CreateForm(TfrmMain, frmMain, GUID);
Run;
end;
end;
begin
App.prApplication(.значение генератора GUID.);
end.
Как правельно переписать метод CreateForm чтоб передовать дополнительный параметр, полученный еще в разделе programm, т.е. еще на стадии зарождения программы????
← →
Kok (2007-03-09 10:44) [1]
> wwwrr (09.03.07 10:40)
Сам знаю что загнул ну все же.....???
← →
Плохиш © (2007-03-09 10:52) [2]Написал-то нормально, но забыл одно "но", сообщить делфи, что теперь надо использовать не родной TApplication, а твой изменённый. А как это сделать, ты можешь узнать изучив код модуля Forms ма предмет использования и создания экземпляра класса TApplication.
PS. Если ветку сейчас опять перенесут :-( больше не буду ответ писать :@
← →
Сергей М. © (2007-03-09 10:54) [3]А ради чего , собственно, "загиб" с наследником TApplication ?
← →
wwwrr (2007-03-09 11:02) [4]
> Сергей М. © (09.03.07 10:54) [3]
Да загиб в том что хотелось, новые методы прописать...
Например тотже CreateForm... и т.д....
Короче говаря основная проблема над которой я бюсь... это передать некий GUID в основной модуль программы .... util frmMain;
← →
Сергей М. © (2007-03-09 11:04) [5]
> загиб в том что хотелось, новые методы прописать
Зачем они нужны ? Тот же CreateForm ?
> передать некий GUID в основной модуль программы
Этот GUID откуда берется ?
← →
wwwrr (2007-03-09 11:09) [6]Постораюсь поставить сетуация под другим углом обзора....
Скажем можно ли сделать так:
(******************************************************************************)
program My;
(******************************************************************************)
uses
Forms,
uMain in "uMain.pas" {frmMain};
{$R *.res}
begin
Application.Initialize;
...
TfrmMain.Create(Application, GUID)
...
Application.Run;
end.
где в основном модуле:
constructor TfrmMain.Create(AOwner: TComponent; GUID: TGUID); {Ïåðåïèñûâàåì ñîáûòèå Create.}
begin
inherited Create(AOwner); {Óíàñëåäóåì ìåòîä Create.}
.... := GUID;
end;
Чем, и на сколько будет отличатся отCreateForm(TfrmMain, frmMain);
← →
wwwrr (2007-03-09 11:10) [7]
> Сергей М. © (09.03.07 11:04) [5]
> Этот GUID откуда берется ?
От другой формы, формы Авторизации, т.е. передает некий (определенный) GUID- пользователя...
← →
Сергей М. © (2007-03-09 11:13) [8]
> От другой формы, формы Авторизации, т.е. передает некий
> (определенный) GUID- пользователя.
И только ради этого нужно городить весь этот огород ?!
← →
Плохиш © (2007-03-09 11:16) [9]
> wwwrr (09.03.07 11:10) [7]
У формы, которой нужен этот гуид, делается новое свойство
property GUID: TGUID read GetGUID write SetGUID;
И присваивается ему значение в любой желаемый момент времени. И ненадо переписывать TApplication.
← →
wwwrr (2007-03-09 11:17) [10]
> Сергей М. © (09.03.07 11:13) [8]
Акак иначе? Этот GUID далее в основном модуле unit frmMain..., будет обробатываться и в зависимости от разграниченных (в БД), прав поль зователя будут создоваться или не создоваться те или иные компонентя программы...
Может есть другие идеи рад выслушать...
← →
Сергей М. © (2007-03-09 11:24) [11]
> wwwrr (09.03.07 11:17) [10]
> Акак иначе?
см. Плохиш © (09.03.07 11:16) [9]
В методе SetGuid запускаешь модально свою "форму авторизации" и получаешь от нее значение GUID
← →
Плохиш © (2007-03-09 11:59) [12]
> wwwrr (09.03.07 11:17) [10]
1. Добавляешь в программу TDataModul, если ещё не сделал. В нем делаешь следующее
2. Создаёшь метод Login, в котором производишь авториторизацию пользователя и устанавливаешь права пользователя.
3. В конструкторе производишь вызов метода Login
4. Создаёшь методHasRight(<Индекс прав>): Boolean;
, в нём проверяешь имеет ли пользователь право
5. Правишь, по необходимости, файл проекта, чтобы строка создания TDataModul была следующей послеApplication.Initialize;
6. Я бы добавил в TDataModul ещё свойство Connected, определяющее имеется ли подключение к базе данных, тогда файл проекта может выглядеть так
begin
Application.Initialize;
Application.CreateForm(TDM, DM);
if DM.Connected then
begin
Application.CreateForm(TfrmMain, frmMain);
.....
Application.Run;
end;
end.
7. В программе, при необходимости проверить права пользователя, производить вызов метода HasRight.
← →
Юрий Зотов © (2007-03-09 14:14) [13]Как правило, можно найти способ и без подобных извращений, но если уж очень надо, то можно и TApplication переписать.
program My;
...
begin
Application.Free;
Application := TMyApplication.Create(...);
Application.Initialize;
TMyApplication(Application).CreateMainForm(TMyForm, MyForm, GUID);
Application.Run;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c