![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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;  |