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. Из того, что вы привели, следует скорее обратный вывод. |
|