#1 25.03.06 08:36
[C++Builder] Подскажите с формами...
Мне в проекте надо где-то 4 формы. При нажатии кнопки на 1-ой форме она должна "пропасть" и вызвать 2-ю. И так по аналогии до 4-ой. Я пробовал "при нажатии кнопки" на 1-ой форме писать:
Form2-> . . . Но ничего не выходит :(
Подскажите где и что надо прописать...
Исправлено /7ельмень (25.03.06 08:40)
Offline
#5 26.03.06 14:51
Re: [C++Builder] Подскажите с формами...
Close(); закрывает только форму, к которой вызвали метод, или если вызвали у главной формы приложения, то закрывает приложение...
а чтоб здесь приложение закрывалось:
void __fastcall TForm4::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1->Close();
}
Offline
#7 26.03.06 18:57
Re: [C++Builder] Подскажите с формами...
/7ельмень,
Открываешь свойства проекта Project->Options там на первой же вкладке список MainForm - собсна и есть выбор главной формы.
В списке слева можно указать порядок создания форм... Или выбрать те, которые будут автоматом создаваться, или не будут....
Offline
#9 29.03.06 12:58
Re: [C++Builder] Подскажите с формами...
Ещё один вопрос.
В паблике 1-ой формы объявляю переменную. По мере выполнения проги присваиваю ей определённое значение. Почему я не могу эту же переменную с этим же значением использовать уже в другой форме? Хотя и включил инклудом первую форму.
Offline
#10 29.03.06 13:50
#11 29.03.06 15:09
#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
#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 ("Íó-ñ, "+ Form3->NameUser + ", ïîåõàëè! %)");
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="Êîðàáëè èãðîêà - "+NameUser;
}
//---------------------------------------------------------------------------И в extern пихал ....
В 1-й форме - всё нормал, а в 3-й ничего.
Исправлено /7ельмень (29.03.06 19:05)
Offline
#15 29.03.06 19:56
#16 29.03.06 19:59
Re: [C++Builder] Подскажите с формами...
кстати... у тебя переменная NameUser является публичной переменной класса TForm3... внитри этого класса обращаться можно просто по имени, либо через this->NameUser... из других можно обращаться только если подгружен хедер с описанием класса и объект класса создан...
Offline
#17 29.03.06 20:15
#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

