• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Builder 6 przejście z jednej formy do drugiej

Object Storage Arubacloud
0 głosów
845 wizyt
pytanie zadane 11 września 2016 w C i C++ przez Akiro Bywalec (2,910 p.)


#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::ExitClick(TObject *Sender)
{
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartClick(TObject *Sender)
{
Form1->Visible=false;
Form2->Visible=true;

}
#include <vc1.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

int x=-8, y=-8;
int do_wygranej=9;
bool kolizja (TImage *pilka, TImage *cegla)
{
  if (pilka->Left+pilka->Width >= cegla->Left &&
      pilka->Left <= cegla->Left + cegla->Width &&
      pilka->Top >= cegla->Top -pilka->Height &&
      pilka->Top<=cegla->Top+cegla->Height)
      {
      return true;
      }
      else return false;
}
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm2::Timer_pilkaTimer(TObject *Sender)
{
b->Left+=x;
b->Top+=y;

//odbij od lewej sciany
if (b->Left-5 <= tlo->Left) x=-x;
//odbij od prawej sciany
if (b->Top-5 <= tlo->Top) y=-y;
//odbij od prawej sciany
if (b->Left+b->Width+5 >= tlo->Width) x=-x;
//skucha
if(b->Top >= p->Top+p->Height+15)
{
Timer_pilka -> Enabled=false;
b-> Visible=false;
Button1->Caption="Przegrana";
Button1->Visible=true;
}
//odbicie od paletki
else if (b->Left > p->Left - b->Width/2 && b->Left < p->Left+p->Width &&
         b->Top+b->Height >= p->Top)
         {
         if (y>0) y=-y;
         }

         if (do_wygranej <= 0)
{
Timer_pilka->Enabled=false;
b->Visible=false;
Button1->Caption="Wygrana";
Button1->Visible=true;
}
//blok1
if (kolizja(b,Image1)==true && Image1->Visible==true)
  {x=-x; y=-y; Image1->Visible=false; do_wygranej--; }
    //blok2
  if (kolizja(b,Image2)==true && Image2->Visible==true)
  {x=-x; y=-y; Image2->Visible=false; do_wygranej--; }
  //blok3
  if (kolizja(b,Image3)==true && Image3->Visible==true)
  {x=-x; y=-y; Image3->Visible=false; do_wygranej--;}
  //blok4
  if (kolizja(b,Image4)==true && Image4->Visible==true)
  {x=-x; y=-y; Image4->Visible=false; do_wygranej--;}
  //blok5
  if (kolizja(b,Image5)==true && Image5->Visible==true)
  {x=-x; y=-y; Image5->Visible=false; do_wygranej--; }
  //blok6
  if (kolizja(b,Image6)==true && Image6->Visible==true)
  {x=-x; y=-y; Image6->Visible=false;do_wygranej--; }
  //blok7
  if (kolizja(b,Image7)==true && Image7->Visible==true)
  {x=-x; y=-y; Image7->Visible=false; do_wygranej--;}
  //blok8
  if (kolizja(b,Image8)==true && Image8->Visible==true)
  {x=-x; y=-y; Image8->Visible=false; do_wygranej--;}
  //blok9
  if (kolizja(b,Image9)==true && Image9->Visible==true)
  {x=-x; y=-y; Image9->Visible=false;do_wygranej--; }
}
//---------------------------------------------------------------------------
void __fastcall TForm2::lewoTimer(TObject *Sender)
{
 if (p->Left>10) p->Left-=10;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::prawoTimer(TObject *Sender)
{
if (p->Left+ p->Width<tlo->Width-10)p->Left +=10;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==VK_LEFT) lewo->Enabled=true;
if (Key==VK_RIGHT) prawo->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if (Key==VK_LEFT) lewo->Enabled=false;
if (Key==VK_RIGHT) prawo->Enabled=false;
}







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



void __fastcall TForm2::Button1Click(TObject *Sender)
{
b->Left=50;
b->Top=30;
Timer_pilka -> Enabled=true;
x=-8;
y=-8;
b->Visible=true;
Button1->Visible=false;
do_wygranej=12;
Image1->Visible=true;
Image2->Visible=true;
Image3->Visible=true;
Image4->Visible=true;
Image5->Visible=true;
Image6->Visible=true;
Image7->Visible=true;
Image8->Visible=true;
Image9->Visible=true;


}

Moment błędu to przejście za pomocą przycisku "StartClick" z formy1 do formy2, może ktoś jakieś sugestie? Będę wdzięczny. 

2 odpowiedzi

0 głosów
odpowiedź 11 września 2016 przez niezalogowany
co masz na myśli przejście
komentarz 11 września 2016 przez Akiro Bywalec (2,910 p.)
Chodzi o to, że po uruchomieniu programu pojawia się Form1 z interfejsem graficznym, po kliknięciu buttona "Start", Form1 ma zniknąć i pojawić się Form2 z nowym interfejsem :)
komentarz 11 września 2016 przez JAKUBW Nałogowiec (33,470 p.)
crashuje ci się?
komentarz 11 września 2016 przez Akiro Bywalec (2,910 p.)
Po prostu pojawia się błąd przy próbie uruchomienia programu.

Ja trochę zakombinowałem i utworzyłem nowy "projekt" zrobiłem to co chciałem, potem stworzyłem drugi, niezależny i na końcu je złączyłem, nawet nie wiem czy tak wolno, ale człowiek uczy się na błędach :P
komentarz 11 września 2016 przez JAKUBW Nałogowiec (33,470 p.)
Co to za błąd? Zazwyczaj wszystko jest napisane.
komentarz 11 września 2016 przez Akiro Bywalec (2,910 p.)
Tak też jest i tym razem :)

[C++ Error] Unit1.cpp(27): E2451 Undefined symbol 'Form2'
0 głosów
odpowiedź 11 września 2016 przez JAKUBW Nałogowiec (33,470 p.)
edycja 11 września 2016 przez JAKUBW

Spróbuj tak:

Z pliku 2 usuń:

TForm2 *Form2;

A w pliku 1 zmień Click na:

void __fastcall TForm1::StartClick(TObject *Sender)
{
this->Visible=false;
TForm2 *form = new TForm2(Application);
form->ShowModal();
delete form;
this->Visible = true;
}

Podobne pytania

0 głosów
3 odpowiedzi 405 wizyt
pytanie zadane 6 stycznia 2016 w C i C++ przez Savuelo Początkujący (310 p.)
0 głosów
1 odpowiedź 944 wizyt
pytanie zadane 10 grudnia 2017 w C i C++ przez antekwi546 Użytkownik (510 p.)
0 głosów
1 odpowiedź 117 wizyt
pytanie zadane 12 czerwca 2018 w C i C++ przez MsMaciek123 Pasjonat (24,760 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...