![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Ломаю голову над этой казалось бы простой задачей уже несколько дней, но видно мне самому понять это не суждено. Суть проблемы. Есть проект в котором имеется n - количество форм(не суть). И одна из них(не главная) всегда открывается при старте программы! Прекрасно понимаю что сам где-то накосячил
. Только не могу понять где. Что я сделал: Project - Options - MainForm Стоит загрузочная форма все правильно и все формы AutoCreate.Вот собственно и код проекта: Код:
program Project1;
uses
Vcl.Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas' {Form6},
Unit7 in 'Unit7.pas' {Form7},
Unit8 in 'Unit8.pas' {Form8},
Unit9 in 'Unit9.pas' {Form9},
Unit10 in 'Unit10.pas' {Form10},
Unit11 in 'Unit11.pas' {Form11},
Unit12 in 'Unit12.pas' {Form12},
Unit13 in 'Unit13.pas' {Form13},
Unit14 in 'Unit14.pas' {Form14},
Unit16 in 'Unit16.pas' {Form16},
Unit17 in 'Unit17.pas' {Form17},
Unit18 in 'Unit18.pas' {LoadForm},
Unit19 in 'Unit19.pas' {Form19};
{$R *.res}
var
HM: THandle;
function Check: boolean;
begin
HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex');
Result := (HM <> 0);
if HM = 0 then
HM := CreateMutex(nil, false, 'MyOwnMutex');
end;
begin
if Check then Exit;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TLoadForm, LoadForm);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm8, Form8);
Application.CreateForm(TForm9, Form9);
Application.CreateForm(TForm10, Form10);
Application.CreateForm(TForm11, Form11);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TForm13, Form13);
Application.CreateForm(TForm14, Form14);
Application.CreateForm(TForm16, Form16);
Application.CreateForm(TForm17, Form17);
Application.CreateForm(TForm19, Form19);
Application.Run;
end.Открывается постоянно Form6. Такие мысли что где-то спряталось что-то типа Form6.Show были, проверил все несколько раз - безрезультатно. Пробовал закоментировать все формы кроме Form6 и LoadForm не помогло. А самое интересное, по моему мнению, что если закрыть Form6 больше ее открыть не получается. Заранее спасибо за помощь! PS Form6.Visible:=false не предлагать. |
|
#2
|
||||
|
||||
|
Всё же предложу Form6.Visible:=false, в инспекторе, как у всех остальных кроме главной, проверьте. Или попробуйте удалить на время эту форму из списка (Project > Remove from project...) случайно другая форма не начнёт вести себя так же?
|
|
#3
|
||||
|
||||
|
у Form6 выключи (False) Visible в инспекторе объектов.
|
|
#4
|
|||
|
|||
|
Form6.Visible := false в инспекторе безусловно помогает, но потом в run time я не могу ее заставить появиться(не открывается). Да и что то мне подсказывает это не выход, ибо так не должно быть. Удалить только попробовал, итог - другой формы не вылетает.
|
|
#5
|
||||
|
||||
|
Форма открывается, вероятно её просто не видно, попробуйте Form6.Visible := true для показа
|
|
#6
|
|||
|
|||
|
Цитата:
Код:
Form6.Show; Form6.ShowModal; Form6.Visible:=true; А так же Код:
Form6.free; Form6 := tForm6.create(application); И все это в разных вариация не приносит результата. ![]() |
|
#7
|
|||
|
|||
|
Толи лыжи не едут, то я ...
|
|
#8
|
||||
|
||||
|
Вы эту форму создаёте статически при запуске сборки, и Form6.free здесь не требуется, достаточно Close;
|
|
#9
|
|||
|
|||
|
Создавая форму динамически( изключая ее из AutoCreate )
Код:
Form6 := tForm6.create(application); На пример в событие OnCreate form19(это последняя форма которая загружается) к примеру код Код:
Form6:= tForm6.create(application); А берем любую другую форму и все ок. |
|
#10
|
||||
|
||||
|
Visible == false это значение по умолчанию. формы с true сразу появляются на экране.
|
|
#11
|
||||
|
||||
|
рекомендую создавать и разрушать формы по мере их необходимости - сделать следующее:
1. убрать все формы (кроме главной) из автосоздаваемых: Project --> Options --> Forms --> переместить все, кроме главной (и модулей) в Available Forms 2. при надобности создавать нужную форму: Код:
if (not Assigned(form2)) then form2:=Tform2.Create(Self);
form2.show; {или form2.showModal;}Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; form2:=nil; end; |