Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача переменной между формами

522
02 апреля 2003 года
neo_by
23 / / 20.12.1999
Загружаю форму, показываю её модально. И надо по результатам выполнения передать обратно переменную, например AnsiString type... ВОТ! темп не предлагать...

ЗЫ форму загружаю уже ессно из имеющейся:-) кхе...
317
03 апреля 2003 года
Relax
573 / / 20.09.2000
а где ты потом хочешь юзать это значение? все равно же в первой форме? почему нельзя обратиться Form1->Var = ...? либо можно передать через свойство ModalResult модальной формы:

TModalResult ModalResult = Form2->ShowModal();
if(ModalResult == ...)
{
...
}

ModalResult можно присваивать по нажатию кнопок, о после Close(); а если в качестве кнопок юзаются TButton, то там вообще все автоматически делается, а значение ModalResult указывается еще design time для каждой кнопки.
522
08 апреля 2003 года
neo_by
23 / / 20.12.1999
Цитата:
Originally posted by Relax
а где ты потом хочешь юзать это значение? все равно же в первой форме? почему нельзя обратиться Form1->Var = ...? либо можно передать через свойство ModalResult модальной формы:

TModalResult ModalResult = Form2->ShowModal();
if(ModalResult == ...)
{
...
}


ModalResult возвращает int, а мне нужен другой тип, напр. AnsiString... А через форму тоже не получится, т.к. нет доступа в объект Form1, из объекта Form2.
Так что вопрос открыт: в OnShow стоит ShowModal Form2. Из Form2 надо передать значение в Form1...

362
08 апреля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by neo_by

ModalResult возвращает int, а мне нужен другой тип, напр. AnsiString... А через форму тоже не получится, т.к. нет доступа в объект Form1, из объекта Form2.
Так что вопрос открыт: в OnShow стоит ShowModal Form2. Из Form2 надо передать значение в Form1...



Если ты мз Form1 вызываешь Form2, то, очевидно, она тебе видна. Ну и создай в ней какой-либо public член и забирай значение из него.

Form2::ButtonOkClick
{
strResulInForm2 = "Возвращаемое значение";
}

Form1::OnShow
{
AnsiString strResultInForm1;
if(Form2->ShowModal() == mrOk)
strResultInForm1 = Form2->strResultInForm2;
//дальше можешь Form2 хоть уничножить
// а результатом пользоваться
}

421
10 апреля 2003 года
bercut
124 / / 20.06.2000
Если я все правильно понял, то можно просто в хедерах обоих форм после вот этой строчки (extern PACKAGE TForm *Form;) объявить свои переменные по такому принципу:

extern TIniFile *Ini;
extern String sFile, VersionFile;
extern char APchar[255];

А также естественно объявить эти переменные в юните главной формы.
362
10 апреля 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by bercut
Если я все правильно понял, то можно просто в хедерах обоих форм после вот этой строчки (extern PACKAGE TForm *Form;) объявить свои переменные по такому принципу:

extern TIniFile *Ini;
extern String sFile, VersionFile;
extern char APchar[255];

А также естественно объявить эти переменные в юните главной формы.



Не очень логично для единовременной передачи значения создавать переменны, которые будут существовать все время жизни программы

14K
31 мая 2006 года
dadmin
7 / / 01.03.2006
Цитата:
Originally posted by bercut
Если я все правильно понял, то можно просто в хедерах обоих форм после вот этой строчки (extern PACKAGE TForm *Form;) объявить свои переменные по такому принципу:

extern TIniFile *Ini;
extern String sFile, VersionFile;
extern char APchar[255];

А также естественно объявить эти переменные в юните главной формы.



У меня такое не проходит:

extern result res

после этого отладчик видит, что объект содержит ненулевые значения, но сама программа видит одни нули

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог