Официальный сайт студ.городка НГТУ
Программирование и БД » [C++Builder] Подскажите с формами... 

#1  25.03.06 08:36

[C++Builder] Подскажите с формами...

Мне в проекте надо где-то 4 формы. При нажатии кнопки на 1-ой форме она должна "пропасть" и вызвать 2-ю. И так по аналогии до 4-ой. Я пробовал "при нажатии кнопки" на 1-ой форме писать:
   Form2-> . . .             Но ничего не выходит :(

Подскажите где и что надо прописать...

Исправлено /7ельмень (25.03.06 08:40)

Offline

#2  25.03.06 12:50

Re: [C++Builder] Подскажите с формами...

void Form1::OnButton1Click(TObject* Sender)
{
Form1->Visible = false;
Form2->Visible = true;
}

в хедэр unit1.h прописать #include "unit2.h"
(или как там  тебя модули называются)

Offline

#3  25.03.06 15:01

Re: [C++Builder] Подскажите с формами...

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

Offline

#4  26.03.06 14:03

Re: [C++Builder] Подскажите с формами...

Ага, я понял)))
А как, например, с 4-ой формы закрыть всё приложение не возвращаясь к главной форме? На сколько я понял,
Close();
должно закрывать главную форму, а у меня закрывает лишь текущую...

Offline

#5  26.03.06 14:51

Re: [C++Builder] Подскажите с формами...

Close(); закрывает только форму, к которой вызвали метод, или если вызвали у главной формы приложения, то закрывает приложение...
а чтоб здесь приложение закрывалось:

void __fastcall TForm4::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1->Close();       
}

Offline

#6  26.03.06 17:26

Re: [C++Builder] Подскажите с формами...

Пользуясь случаем, спрошу ещё :)

А можно ли сделать так, чтобы главная форма была не 1-ой, а 3-ей? Или может их как-то можно вызывать в нужном мне порядке?

Offline

#7  26.03.06 18:57

Re: [C++Builder] Подскажите с формами...

/7ельмень,

Открываешь свойства проекта Project->Options там на первой же вкладке список MainForm - собсна и есть выбор главной формы.
В списке слева можно указать порядок создания форм... Или выбрать те, которые будут автоматом создаваться, или не будут....

Offline

#8  26.03.06 23:51

Re: [C++Builder] Подскажите с формами...

2 про: сенкс :) Так намного быстрее....

Offline

#9  29.03.06 12:58

Re: [C++Builder] Подскажите с формами...

Ещё один вопрос.

В паблике 1-ой формы объявляю переменную.  По мере выполнения проги присваиваю ей определённое значение. Почему я не могу эту же переменную с этим же значением использовать уже в другой форме? Хотя и включил инклудом первую форму.

Offline

#10  29.03.06 13:50

Re: [C++Builder] Подскажите с формами...

что значит не можешь? какая ошибка выдается?
все доступно.

Offline

#11  29.03.06 15:09

Re: [C++Builder] Подскажите с формами...

После того как в 1-й форме переменной присваиваю значение, делаю проверку (присвоилось или нет), всё хорошо. Но когда вызываю из дугой формы, переменная почему-то, пустая :(

Offline

#12  29.03.06 15:56

Re: [C++Builder] Подскажите с формами...

вот смотри:
Form1 содержит Label1 и Button1, при нажатии кнопки присваивается значение переменной х=2, которая объявлена в Form2 в паблике и Label1->Caption присваивается значение переменной Form2->х

Form1 (unit1.cpp):

Код::

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Form2->x = 2;
        Label1->Caption = Form2->x;
}
//---------------------------------------------------------------------------

Form2 (unit2.h):

Код::

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:	// IDE-managed Components
private:	// User declarations
public:		// User declarations
        int x;
        __fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif

Исправлено akse (29.03.06 16:05)

Offline

#13  29.03.06 16:33

Re: [C++Builder] Подскажите с формами...

/7ельмень написал(а):

После того как в 1-й форме переменной присваиваю значение, делаю проверку (присвоилось или нет), всё хорошо. Но когда вызываю из дугой формы, переменная почему-то, пустая :(

код в студию, у меня все нормально :)

Offline

#14  29.03.06 19:01

Re: [C++Builder] Подскажите с формами...

"Wellcome.срр" (Form1)

Код::

//---------------------------------------------------------------------------

#include <vcl.h>
#include "Wellcome.h"
#include "NachaloBitvi.h"
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Form3->NameUser=Edit1->Text;
        ShowMessage ("&Iacute;&oacute;-&ntilde;, "+ Form3->NameUser + ", &iuml;&icirc;&aring;&otilde;&agrave;&euml;&egrave;! %)");
        Form1->Visible=false;
        Form2->Visible=true;
}
//---------------------------------------------------------------------------

"NachaloBitvi.h" (Form3)

Код::

//---------------------------------------------------------------------------

#ifndef NachaloBitviH
#define NachaloBitviH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>

#include "Wellcome.h"
#include "Statistika.h"
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:	// IDE-managed Components
        TPanel *Panel1;
        TPanel *Panel2;
        TBitBtn *BitBtn1;
        TBitBtn *BitBtn2;
        TEdit *Edit1;
        TEdit *Edit2;
        TEdit *Edit3;
        TLabel *Label1;
        TLabel *Label2;
        TBitBtn *BitBtn3;
        void __fastcall BitBtn2Click(TObject *Sender);
        void __fastcall BitBtn3Click(TObject *Sender);
private:	// User declarations
public:		// User declarations
        AnsiString NameUser;
        __fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif

"NachaloBitvi.срр" (Form3)

Код::

//---------------------------------------------------------------------------

#include <vcl.h>
#include "NachaloBitvi.h"
#include "Wellcome.cpp"
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{
        Edit2->Text="qwe + "+NameUser;
        Label1->Caption="&Ecirc;&icirc;&eth;&agrave;&aacute;&euml;&egrave; &egrave;&atilde;&eth;&icirc;&ecirc;&agrave; - "+NameUser;
}
//---------------------------------------------------------------------------

И в extern пихал ....
В 1-й форме - всё нормал, а в 3-й ничего.

Исправлено /7ельмень (29.03.06 19:05)

Offline

#15  29.03.06 19:56

Re: [C++Builder] Подскажите с формами...

#include "Wellcome.cpp"

сильно! вообще, через инклуд подгружают хедер-файлы...

обращайся через this->NameUser
хотя, и так должно работать...

зачем в "NachaloBitvi.h"
#include "Wellcome.h"?

Offline

#16  29.03.06 19:59

Re: [C++Builder] Подскажите с формами...

кстати... у тебя переменная NameUser является публичной переменной класса TForm3... внитри этого класса обращаться можно просто по имени, либо через this->NameUser... из других можно обращаться только если подгружен хедер с описанием класса и объект класса создан...

Offline

#17  29.03.06 20:15

Re: [C++Builder] Подскажите с формами...

лучше на ShowForm

Offline

#18  29.03.06 20:15

Re: [C++Builder] Подскажите с формами...

Jaguar написал(а):

зачем в "NachaloBitvi.h"
#include "Wellcome.h"?

Это мне надо было для других действий (забыл убрать)

Jaguar написал(а):

#include "Wellcome.cpp"
сильно! вообще, через инклуд подгружают хедер-файлы...

Я пробовал по всякому, а без этого инклуда он не хочет комилить, выдаёт ошибки:
"Assertion failed: 0, file C:\src\ilink\modmap.c, line 177",
"Abnormal program termination"

Offline

#19  29.03.06 20:22

Re: [C++Builder] Подскажите с формами...

2 Mozg_RUS:
сенкс! точно!.... ))

Offline

#20  08.05.06 20:28

Re: [C++Builder] Подскажите с формами...

Как сделать форму "поверх всех окон", кроме как:

Код::

Form1->ShowModal();

?

Offline

#21  09.05.06 02:08

Re: [C++Builder] Подскажите с формами...

кроме как ShowModal никак

Offline

#22  09.05.06 08:53

Re: [C++Builder] Подскажите с формами...

Блин, просто я давно где-то читал про это... сейчас не могу вспомнить где :(
Mozg_RUS, если сумею чётко сформулировать - то, обязательно :)

Offline

#23  09.05.06 15:41

Re: [C++Builder] Подскажите с формами...

у окна есть атрибуит Stay-On-Top, если нужно поверх всех приложений.
и ShowModal для модального окна.

Offline

Программирование и БД » [C++Builder] Подскажите с формами... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.033 сек.
Выполнено 14 запросов.