| Giny | 
| Отправлено: 10.12.2005, 13:57 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | Проясните ситуацию. На дочерней форме Form2 есть компонент Edit1 c текстом Edit1->Text="текст" . Закрыв эту форму мы можем обратится в модуле главной формы Form2->Edit1->Text и получим "текст". Открыв опять Form2, увидим что Edit1 пуст. Вопрос, на каком этапе обнулилось свойство. | 
|  | 
| _shumer | 
| Отправлено: 10.12.2005, 14:53 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 7
 
 
 
  
 | Самостоятельно СBuilder этого не делает! Но этого можно добиться несколькими способами: 1) Вы все время пересоздаете форму, и тогда в момент ее создания естественно произойдет инициализация начальными условиями.
 
 | CODE |  | void __fastcall TForm1::Button1Click(TObject *Sender) {
 Form2 = new TForm2(Owner);
 Form2->ShowModal();
 AnsiString S = Form2->Edit1->Text;
 delete Form2;
 }
 | 
 2)Вы не удаляете форму, но в момент ее отображения на экране прописываете
 [CODE]void __fastcall TForm2::FormShow(TObject *Sender)
 {
 Edit1->Text = "";
 }[CODE]
 
 Если ни один, ни второй способ в вашей программе не нашел подтверждения, присылайте тогда текст программы.
 | 
|  | 
| Giny | 
| Отправлено: 10.12.2005, 15:31 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 23
 
 
 
  
 | Я отображаю форму так: Form2->Show();
 a закрываю так
 Form2->Close();
 
 Попутный вопрос:
 Builder кодом (для не главной формы)
 [CODE]
 Application->CreateForm(__classid(TForm2), &Form2);
 [CODE]
 создает форму, но не отображает ее, и оставляет ее в памяти или как?
 
 По команде Form2->Show(); отображает ее, а Form2->Close(); скрывает или удаляет из памяти?
 
 
 | 
|  | 
| trigger | 
| Отправлено: 10.12.2005, 15:51 |  | 
| 
 Не зарегистрирован
 
 
 
 
 
 
 
  
 | можно попробовать скрывать форму Form2->Hide(); может это поможет ...
 | 
|  | 
| _shumer | 
| Отправлено: 10.12.2005, 15:58 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 7
 
 
 
  
 | Попробуйте запустить следующий пример и в момент первого "слипа" ввести что-то в Edit1->Text. Посмотрите, что из этого получится, и когда введенный вами текст все-таки попадет в Edit1. Я думаю после такого теста вы сами сможете ответить на свои вопросы. 
 | CODE |  | void __fastcall TForm1::Button1Click(TObject *Sender) {
 Form2->Show();
 Form1->Caption = AnsiString(int(Form2->Visible));
 Sleep(5000);
 Form2->Close();
 Form1->Caption = AnsiString(int(Form2->Visible));
 Sleep(5000);
 Form2->Visible = true;
 Form1->Caption = AnsiString(int(Form2->Visible));
 }
 | 
 Единственное — для меня так и остается загадкой, почему у вас обновляются данные в Edit1. Из того, что вы привели, следует скорее обратный вывод.
 | 
|  |