CIS Inc. Ltd.

Sign by Dealighted - Coupons & Discount Shopping

Домашняя Обратная связь Поиск

Формы
Вверх

 

[В стадии разработки]

Домашняя
Секреты
Ловушка
Перехват CD
Формы
Нонсенс
Hide
Alias

 

 
www.yandex.ru

Не жадничай!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

Праздники славян

бесплатная музыка mp3

Яндекс цитирования

 


Components and tools for developers

PoleSoft Technologies Group

DIGITLAND.RU Портал программирования, цифровых технологий и электроники

Шрифт

Locations of visitors to this page

free counters


Динамическое создание форм

Вопрос 882 прислал Sladius:  Пишу на BCB 6. Такие дела: статически создается главная форма из нее динамически создается вторая форма. Из второй формы динамически создается третья форма. Теперь вопрос: как мне вызвать в третьей форме что-нибудь из второй?
Вопрос 880 прислал Sladius:
   Пишу на ВСВ 6.0. Хочу конкретизировать свой вопрос так как я его задал не корректно. создание 2 и 3 формы происходит динамически следующим методом из cpp файла удаляется строчка TForm2 *Form2;
h файла удаляются строчка extern PACKAGE TForm2 *Form2;
в свойствах проекта форма переносится в available form форма создается динамически следующим образом:
TForm2 * Form2=new TForm2(0);
try
{
Form2->ShowModal();
}
__finally
{
delete Form2;
}
Таким же образом создается и третья форма. Я ничего не могу вызвать третьей формой из второй.
 

Из вопросов на форуме
Вопросы и ответы по Си и С++.
Cайт: http://www.murashi.com.ru

 

25 сентября 2004  

    Давайте создадим самое простое тестовое приложение в котором есть основная форма Form1 и две динамические, Form2 и Form3. Поместим на Form1 два компонента Edit, Label и Button. На Form2 поместим два компонента Edit, два компонента Label и два компонента Button. На Form3 поместим два компонента Edit, Label и Button. В инспекторе объектов присвоим свойствам "Caption" и "Text" соответствующие значения, примерно как на рисунке 1.


Рисунок 1. Формы в процессе проектирования.

    В обработчике нажатия кнопки для Form1 напишем:

        Form2 = new TForm2(this);
        Form2->Label1->Caption = Edit1->Text;
        Form2->ShowModal();
        Form2->Free();
 

    В обработчике нажатия Button1 для Form2:

        Form1->Edit2->Text = Edit1->Text;

    В обработчике нажатия Button2 для Form2:

        TForm3 *Form3 = new TForm3(this);
        Form3->Label1->Caption = Edit2->Text;
        Form3->ShowModal();
        Form3->Free();

    В обработчике нажатия Button1 для Form3:

        Form2->Label2->Caption = Edit2->Text;
        Form1->Label1->Caption = Edit1->Text;

    Для Button1 Form2 и Form3 установим свойство ModalResult в mrOk. В опциях проекта перенесем Form2 и Form3 из Auto-create forms в Available forms как показано на рисунке 2.

Рисунок 2. Окно "Свойства проекта".

    В модуль Unit1.cpp добавим заголовочный файл Form2:

        #include "Unit2.h"

    и объявим внешнюю глобальную переменную:

        extern TForm2 *Form2;

    Так как Form2 и Form3 будут передавать данные в Form1, добавим в модули Unit2.cpp и Unit3.cpp заголовочный файл Form1:

        #include "Unit1.h"

    Незабываем добавить в модуль Unit2.cpp заголовочный файл Form3:

        #include "Unit3.h"

а в модуль Unit3.cpp заголовочный файл Form2:

        #include "Unit2.h"

    В листингах приведен полный текст модулей Unit1, Unit2 и Unit3

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
extern TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Form2 = new TForm2(this);
        Form2->Label1->Caption = Edit1->Text;
        Form2->ShowModal();
        Form2->Free();
}
//---------------------------------------------------------------------------

Листинг 1. Модуль Unit1.cpp.

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
#include "Unit3.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
        Form1->Edit2->Text = Edit1->Text;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
        TForm3 *Form3 = new TForm3(this);
        Form3->Label1->Caption = Edit2->Text;
        Form3->ShowModal();
        Form3->Free();
}
//---------------------------------------------------------------------------

Листинг 2. Модуль Unit2.cpp.

#include <vcl.h>
#pragma hdrstop

#include "Unit3.h"
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Button1Click(TObject *Sender)
{
        Form2->Label2->Caption = Edit2->Text;
        Form1->Label1->Caption = Edit1->Text;
}
//---------------------------------------------------------------------------

Листинг 3. Модуль Unit3.cpp.

    Собираем, запускаем и тестируем.

 

 

Скачать

MD5    C4B3282E1534F997ED6B73993DB9BD49

This site is a member of WebRing.
To browse visit Here.


 

Отправить сообщение для: Web-мастера с вопросами и замечаниями об этом веб-узле.
© 2010 Serg Kappa CIS Inc. Ltd. ©1990 - 2010
Дата изменения: 21.10.2010

Одноклассники.ru - Поиск одноклассников, однокурсников, бывших выпускников и старых друзей

 

Сайт управляется системой uCoz