Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1173855559
OnRaven
2007-03-14 09:59
2007.04.01
Отключёние ctrl+esc


2-1173091442
Магедон
2007-03-05 13:44
2007.04.01
Вопрос о маленьком почновом клиентике.


2-1173694877
smaller
2007-03-12 13:21
2007.04.01
Неизвестный компонент


15-1173425895
vajo
2007-03-09 10:38
2007.04.01
SD - MiniSD


3-1168586579
zdm
2007-01-12 10:22
2007.04.01
IBExpert выдал сообщение





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