![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Если в опциях проекта поместить форму в Auto-create-Form, то она будет создаваться сразу после старта программы. Если в форме в свойствах Visible присвоить Hide, то форма видна не будет. По мере надобности, форму можно делать то видимой, то невидимой. И тут все просто. В такую форму параметры из другой формы передаются самым замечательным образом через точечную нотацию. Например: Form2.Edit1.Text := 'asfgafg'; 
		
	
		
		
		
		
		
	
		
		
	
	
	И все тут же перестает работать, если у меня дочерняя форма создается динамически в пункте меню MDI-формы (главной формы) таким образом: Код: 
	PROCEDURE TForm1.N2Click(Sender: TObject); VAR Child: TForm2; BEGIN Child := TForm2.Create(Application); Child.Top := 6; Child.Left := 300; END; Начиная с этого момента команда Form2.Edit1.Text := 'asfgafg'; работать перестает. На стадии компиляции компилятор никакой ошибки не выдает, а при исполнении этой команды вживую, программа выдает ошибку: "Acces violation at address 004B42CF in module 'Forma1.exe'. Read of address 00000380." Никак не могу понять, как передать значение в форму, создаваемую таким образом. И мне нужно именно ТАК создавать форму, так-как значение Hide "дочерней форме" присвоить нельзя. Ну, или, быть может, еще каким-то другим способом делать видимой или невидимой дочернюю форму, про который я не знаю. В разделе Uses все модули прописаны. Как я уже говорил, компилятор не ругается. Тут у меня все Ок. Прошу прощения, если вопрос глупый. Я совсем еще новичок в Дельфи.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 я это дело обходил так:  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	для Form1 Код: 
	uses uForm2; public StartKey : integeer; ... procedure TForm1.N2Click(Sender: TObject); var chForm: TForm; begin StartKey :=1; chForm := TForm.Create(Application); end; Код: 
	uses uForm1 ... procedure TForm2.Create(Sender:TObject); begin case Form1.StartKey of 1 : begin Top := 6; Left := 300; end; 2 : begin ... end; end; end;  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Честно говоря не понял, причем тут переменная StartKey и последующая проверка её значения в другой форме. 
		
	
		
		
		
		
		
	
		
		
	
	
	Если коротко, то мне нужно передать значение в из одной дочерней формы, в другую дочернюю форму таким образом: Form2.Edit1.Text := Form3.Edit1.Text; Но если форма Form2 создавалась командой TForm2.Create(Application); то у меня ничего не работает. Программа в этом месте выдает ошибку. И еще. Переменную StartKey я смог засунуть только в эту часть кода: Код: 
	  PUBLIC
    { Public declarations }
  StartKey: integer;
  END;
VAR
  Form1: TForm1;
IMPLEMENTATION
USES Form2;Ниже служебного слова USES я засунуть не смог. Компилятор ругается. В общем, или я что-то не до понял, или не так вопрос задал.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 а ты и не сможешь ничего менять на Форме2, пока не создашь её  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	и только после того как она будет созданная, ты сможешь передавать ей то, что те нужно ЗЫ: StartKey ты как раз туда и поставил, куда нужно было ![]() ЗЫ2: это был пример, когда мне нужно было менять вид одной и той же формы в момент её создания, в зависимости от того, какая форма и кнопка её вызвала  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Тогда вопрос - Как создавать дочернюю форму? Я думал, что такое написание: Код: 
	Child := TForm2.Create(Application);  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 я создаю так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	Application.CreateForm(TfList,fList);  |