Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование второй формы, и компонентов из нее 
:(
    Опции темы
Klin
Дата 30.4.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Вопрос не сложный, но задается часто. Для того, чтобы использовать компоненет или что-то другое из иной формы, нужно ее "проинклудить":

Код

 #include "Unti2.h" // Вместо "Unit2.h" - ваш Unit


p.s. А для использования переменных из второй формы, мы должны прописывать их в -h файле в public:

Код

 . . . . . . .
 private:    // User declarations
 public:    // User declarations
  int MyVar;
 . . . . . . .


Это сообщение отредактировал(а) Klin - 30.4.2007, 21:59


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
Дата 23.5.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



А вот несколько примеров, чтобы было понятно, как работать с компонентами и переменными других форм.

№1: Заполнение текстового поля нужным значением
описание: кнопка (Button1) на главной форме (Form1), содержит действие, которое изменяет текст в текстовом поле (Edit1) на второй форме (Form2) 

Код

 #include "Unit2.h" // проинклудим нашу форму
 . . . . . . . . .
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form2->Edit1->Text = "Это мой текст"; // изменяем текст
 Form2->Show(); // отображаем вторую форму
}
//---------------------------------------------------------------------------


 Можно сначала отображать форму, а затем изменять тектовое поле, но делается это только тогда, когда в этом есть необходимость. 

№ 2: Программное нажатие клавиши
описание: главная форма (Form1) содержит кнопку (Button1), которая выполняет нажатие кнопки (Button1) на второй форме (MyForm), при условии, что текстовое поле (Edit1), на главной форме, имеет текст "Разрешаю". Перед нажатием кнопки Button2 на главной форме, следует выполнить нажатие кнопки Button1, для отображения второй формы 

Код

  #include "Unit3.h" // проинклудим нашу форму
 . . . . . . . . .
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MyForm->Show(); // отображаем вторую форму
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 if (Edit1->Text == "Разрешаю") MyForm->Button1->Click();
}
//---------------------------------------------------------------------------


№ 3: Использование переменной из другой формы
описание: Unit4 (содержащий Form2) содержит переменную, которую нужно использовать в Unit1 (содержащий Form1), программа выводит значение этой переменной. Button1 - показывает форму, Button2 - заполняет текстовое поле (Edit1) значением переменной "х", Button3  - записывает новое значение этой переменной

Код

  #include "Unit4.h" // проинклудим нашу форму
 . . . . . . . . .
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form2->Show(); // отображаем вторую форму
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Edit1->Text = Form2->x; // получаем значение переменной
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 Form2->x = 4; // изменяем значение переменной
}
//---------------------------------------------------------------------------


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

№ 4: Обратная связь
описание: иногда в программах с двумя формами применяется обратная связь (главная форма использует вторую и вторая форма использует главную), но обычно этот момент обходят. В использовании обратной связи нет ничего такого, но если есть возможность, лучше обойти этот момент. На главной форме (Form1) содержится кнопка для отображения второй формы (MyWindow) и текстовое поле (Edit1), которое заполнятся после нажатия кнопки (Button1) на второй форме. Вторая форма содержит выше описанную кнопку (Button1), кнопку закрытия формы (Button2) и текстовое поле (Edit1).

главная форма (Unit1)
Код

  #include "Unit5.h" // проинклудим вторую форму
 . . . . . . . . .
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MyWindow->Show(); // отображаем вторую форму
}
//---------------------------------------------------------------------------


Вторая форма (Unit5)
Код

  #include "Unit1.h" // проинклудим ГЛАВНУЮ форму
 . . . . . . . . .
void __fastcall TMyWindow::Button1Click(TObject *Sender)
{
 Form1->Edit1->Text = Edit1->Text; // изменяем текстовое поле главной формы
}
//---------------------------------------------------------------------------
void __fastcall TMyWindow::Button2Click(TObject *Sender)
{
 Close(); // закрываем ВТОРУЮ форму
}
//---------------------------------------------------------------------------


№ 5: Закрытие приложения
описание: в прошлом примере, используется функция Close для закрытия формы. Новички используют эту команду  для закрытия своей программы. Но на самом деле Close закрывает форму и только если это главная форма, завершает приложение. Некоторые могут подумать о применении обратной связи. Можно, но это наверно самый накрученный вариант. Их много, вот некоторые из них: 

Код

 Application->Terminate(); // имхо самый "лучший"
 Application->MainForm->Close(); // накрученный вариант
 SendMessage(Application->Handle,WM_CLOSE,0,0); 





--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.