Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Доступ к переменным модуля Проэкта   Найти похожие ветки 

 
Eugene83 ©   (2004-06-03 16:17) [0]

Мастера, можно ли объявив переменную(функцию) в файле ресурсов, получить к ней(к ней) доступ в коде своей главной формы?
Или как  создать переменную и пользоваться ей и в модуле формы и в модуле проэкта?

Не получается вот что:
//=================================================//
program Project1;
uses
 Forms,
 Unit1 in "Unit1.pas" {Form1};
 ULogo in "ULogo.pas" {LogoForm};

{$R *.RES}

begin
 Application.Initialize; {до этого момента никаких изменений}

 with TLogoForm.Create(Application) do
 try
   Show;
   Update;
   Application.CreateForm(TForm1, Form1);

  // Хочется двигать ProgressBar не только сдесь, но и в TForm1.FormCreate .
   LogoForm.ProgressBar1.StepIt;   //TProgressBar лежит на TLogoForm"е

 finally
   Free;
 end;
 Application.Run;
end.

//=================================================//
Procedure TForm1.FormCreate
begin
 LogoForm.ProgressBar1.StepIt;  // НЕ ПОЛУЧАЕТСЯ !!!
end;
//=================================================//


 
Smithson ©   (2004-06-03 16:22) [1]

А что пишет на НЕ ПОЛУЧАЕТСЯ? Так все похоже на правду.


 
Digitman ©   (2004-06-03 16:27) [2]

Application.CreateForm(TLogoForm, LogoForm);
with LogoForm do
try
  Show;
  Update;
  Application.CreateForm(TForm1, Form1);

  LogoForm.ProgressBar1.StepIt;

finally
  Free;
end;
Application.Run;
end.


 
Erik1   (2004-06-03 16:39) [3]

Я кажется понял, что тебе надо, сделай так:
 Application.Initialize;
 SplashForm := TSplashForm.Create(nil);
 SplashForm.Show;
.....
 SplashForm.ProgressBar1.StepIt;
 TForm1.Create(Application, SplashForm);
....  
 SplashForm.Free;
 Application.Run;
В TForm1 переопредели конструктор для приема второго параметра.


 
Eugene83 ©   (2004-06-04 15:48) [4]

Eric1, спасибо что ответил.
Но, всё же это не то что мне нужно...
Я хочу двигать Progressbar и после создания каждой формы и во время создания каждой формы, т.е.:

SplashForm.ProgressBar1.StepIt;
TForm1.Create(Application, SplashForm);

и затем, в TForm1.FormCreate
begin
 StepIt;
StepIt;
StepIt;

end;

и
TForm2.FormCreate
begin
 StepIt;
StepIt;
StepIt;

end;
и т.д...

Проблемма в том, что прогрессбар стоит, в то время как работает функция FormCreate.  
Заранее благодарен :)


 
FragMan   (2004-06-04 15:57) [5]

Я лично вот так вышел из положения! Знаю что не идеально, но всё же - вариант
------------------

begin
try
 LdRis := TLdRis.Create(Application);
 LdRis.Show;
 LdRis.Update;
LdRis.PrBr.Position:=15;
repeat
 Application.ProcessMessages;
until LdRis.CloseQuery;
 Application.Initialize;
 Application.Title := "Моя программа";
 Application.CreateForm(TForm1, Form1);
 LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm5, Form5);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm6, Form6);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm7, Form7);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm8, Form8);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm9, Form9);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm10, Form10);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 Application.CreateForm(TForm11, Form11);
LdRis.ProgressBar.Position:=LdRis.ProgressBar.Position+9;
 LdRis.Hide;
finally
 LdRis.Free;
end;
 Application.CreateForm(TLdRis, LdRis);
Application.Run;
end.


 
Smithson ©   (2004-06-04 15:59) [6]

Советую вынести этот прогрессбар в отдельный модуль (создавать его ручками, либо вынести в этот отдельный модуль всю форму, на которой живет прогрессбар) и подключить этот модуль как к модулям форм, так и к модулю проекта. Тогда обращаться к нему сможете из модулей форм и из модуля проекта.

Это то, что вам нужно?


 
Amoeba ©   (2004-06-04 15:59) [7]

А нафига такую кучу форм делать AutoCreate???


 
Eugene83 ©   (2004-06-04 16:14) [8]

Eric 1,
Сразу не разобрался...

1.
.....
SplashForm.ProgressBar1.StepIt;
TForm1.Create(Application, SplashForm);
....  
Это должно быть в модуле проэкта?

2.
"В TForm1 переопредели конструктор для приема второго параметра."

Как это сделать?


 
Eugene83 ©   (2004-06-04 16:18) [9]

Smithson, спасибо, это именно то что нужно.

Я вынес его в отдельный модуль
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
ULogo in "ULogo.pas" {LogoForm};  // ВОТ ОН

А как его подключить к модулю форм??


 
Eugene83 ©   (2004-06-04 16:21) [10]

FragMan,
а ты попробуй доберись до

LdRis.ProgressBar.Position

в Form1.Create, а не в модуле проэкта.

А в общем то что у тебя - это то что нужно (если форм много)
У меня она всего одна
Вот и представь МОЙ ПРОГРЕССБАР :)


 
Smithson ©   (2004-06-04 16:56) [11]

Ну как подключить?

implementation
uses ..., ULogo;


 
Eugene83 ©   (2004-06-04 17:03) [12]

Как говорится всё гениальное просто.
(И как сам не сообразил??? Ну ламер ламером!)
Спасибо, Smithson, всё получилось.



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
14-1085834559
AlexG
2004-05-29 16:42
2004.06.20
Позволим пользователю упаравлять своей веткой!


14-1085566482
Ajax
2004-05-26 14:14
2004.06.20
Регистрация в РосНИИРОС


14-1086019222
praktika
2004-05-31 20:00
2004.06.20
! ПОМОГИ СТУДЕНТУ ПРОЙТИ ПРАКТИКУ !


1-1086683960
Snip
2004-06-08 12:39
2004.06.20
Сохранение дерева


1-1086416823
Andriy Tysh
2004-06-05 10:27
2004.06.20
VirtualDBTree or VirtualDBTreeEx -> Demo