Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вопрос передачи параметров


Автор: AlexLogos 5.5.2011, 12:30
Народ, здрасте! 
Вопрос следующий: есть у меня прога которая работает с БД ORACLE. В проге несколько форм которые создаются динамически, но каждой из них надо передать несколько параметров (логин, пароль...) для того чтоб подключиться к базе.
Для начала надо авторизироваться, для этого вводим лог-пароль в форму авторизации и если все ок - загружаются иные формы:
Код

program ParserReincarnation;

uses
  Forms,
  Parser2Main in 'Parser2Main.pas' {Main},
  EnterForm in 'EnterForm.pas' {InviteForm};

{$R *.res}

begin
  Application.Initialize;
  with TInviteForm.Create(Application) do
    begin
      ShowModal;
      if ModalResult = 1 then
        begin
         Application.MainFormOnTaskbar := True;
         Application.CreateForm(TMain, Main);
         Application.Run;
        end;
      Free;
    end;
end.

Вопрос собственно как форме Main передать параметры User,Pass если ее еще нет. Можна в принцыпе обьявить User,Pass:string; в модуле проекта, но как к ним обращаться из форм?
Что-то типа:
Код

program ParserReincarnation;

uses
  Forms,
  Parser2Main in 'Parser2Main.pas' {Main},
  //AuthForm in 'AuthForm.pas' {AForm},
  EnterForm in 'EnterForm.pas' {InviteForm};

{$R *.res}
var
User,Pass:string;

begin
  Application.Initialize;
..........

Подскажите как лучше сделать?

Автор: Akella 5.5.2011, 13:34
Цитата(AlexLogos @  5.5.2011,  12:30 Найти цитируемый пост)
Вопрос собственно как форме Main передать параметры User,Pass если ее еще нет.

Сам-то понял, что написал?

Добавлено через 56 секунд
Можно лучше создать модуль и в нём прописать глобальные переменные? К этому модулю могут иметь доступ другие модули/формы.

Автор: AlexLogos 5.5.2011, 14:16
Да, написал я немного не то что имел на уме. Напишу иначе: Как мне получить доступ к переменным описаных в модуле проекта из модуля формы которая создается в проекте (из InviteForm после ее создания)? Между двумя модулями форм понятно как получить доступ к переменным - прописать форму в uses - и работаешь. Как сделать то же для доступа к переменным проекта?

Автор: AlexLogos 5.5.2011, 15:00
Мда... Проще пока сделать общую форму которая будет хранить параметры...

Автор: Snowy 5.5.2011, 15:14
А в чём проблема?
Форма есть. Ты её создал.
Можешь обращаться к её полям прямо перед ShowModal, который и сам является методом твоей формы.
И тот же ModalResult, который ты проверяешь - он тоже поле твоей формы.
С чего ты решил, что ты не можешь так же обратиться к другим её полям?

Автор: AlexLogos 5.5.2011, 15:41
Нет, я не об этом. Как обратиться к переменным User,Pass:string; которые описаны в ParserReincarnation.dpr из юнита EnterForm.pas который входит в проект?

Автор: Akella 5.5.2011, 15:47
в dpr объявлять переменные не комильфо

Автор: AlexLogos 5.5.2011, 16:02
Тогда вопрос - почему их там зя обьявить? И даже если это не комильфо то вопрос как к ним обратиться стоит всеравно...  smile 

Автор: Snowy 5.5.2011, 16:02
Перенеси эти переменные в юнит формы.
И оттуда потом и бери.
Зачем они тебе в dpr?
Цитата(AlexLogos @  5.5.2011,  16:02 Найти цитируемый пост)
И даже если это не комильфо то вопрос как к ним обратиться
Никак.
Если так нужно - создай метод вызова в форме, который принимает 2 переменные по ссылке.
То есть проект сам должен передать их в unit, а не юнит взять у проекта.
Проект является главным.

Автор: AlexLogos 5.5.2011, 16:10
Да-да, так я уже сделал, но как-то интересно было. Спасибо!!! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)