[ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...

Mam taky problem ze pred spustenim programu chcem aby sa mi otvoril Form2, ten sa po nejakom case zavre a otvori sa Form1 kde je uz program... (Form2 - chcem mat ako uvitaciu "tabulu")...

ked som vlozil vyvolavaci prikaz takto:
Kód:
#include <vcl.h>
#include <stdio.h>             
#include<iostream.h>           
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int j;
Form2->Show();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}

vypisalo mi to toto:
[C++ Error] Unit1.cpp(15): E2356 Type mismatch in redeclaration of 'Form2'
[C++ Error] Unit2.h(29): E2344 Earlier declaration of 'Form2'
[C++ Error] Unit1.cpp(15): E2141 Declaration syntax error

ked som vlozil vyvolavaci prikaz takto:
Kód:
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
 Form2->Show();
}
zbytok programu....

presla kompilacia ale vypisalo mi takuto hlasku: EAccessViolation. a program vobec nespusti.

uz ma nic nenapada...:(


_________________
Notebook: ASUS N750JV: Windows 8.1 64bit, Intel(R) Core(TM) i7-4700HQ CPU 2.40 GHz, 12GB RAM (DDR3 1600 MHz), NVIDIA GeForce GT 750M 4GB VRAM + HD Graphics 4600, 750 GB HDD (7200 rpm), Blu-ray Reader.
Smartphone: Samsung Galaxy S5 mini
Offline

Skúsený užívateľ
Skúsený užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 11.01.09
Prihlásený: 03.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova

A je Form2 vytvorený ( lebo Access Violation je zápis do nealokovanej pamäte )? Ak nie, môžeš postupovať takto:
Kód:
{

    TForm2* Form2 = new TForm2( Application );
    Form1->Hide();
    Form2->ShowModal(); // modalne okno je také, na ktorého ukončenie sa čaká (tzn, kód nepokračuje, pokiaľ sa neuzavrie Form2 )
    Form2->Hide();
    delete Form2;
    Form1->Show();

}


Ak už je vytvorený, tak vynechaj prvý riadok v kóde, kde sa form vytvára.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2

Fico píše:
A je Form2 vytvorený ( lebo Access Violation je zápis do nealokovanej pamäte )? Ak nie, môžeš postupovať takto:
Kód:
{

    TForm2* Form2 = new TForm2( Application );
    Form1->Hide();
    Form2->ShowModal(); // modalne okno je také, na ktorého ukončenie sa čaká (tzn, kód nepokračuje, pokiaľ sa neuzavrie Form2 )
    Form2->Hide();
    delete Form2;
    Form1->Show();

}


Ak už je vytvorený, tak vynechaj prvý riadok v kóde, kde sa form vytvára.
ale on chcel pravdepodobne splashscreen , alebo zeby nie ?


Offline

Skúsený užívateľ
Skúsený užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 11.01.09
Prihlásený: 03.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova

Z jeho popisu som to nepochopil. Nech si skúsi, či mu to vyhovuje takto. Keď nie, stačí sa ozvať.


_________________
Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS.
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2

predpokladam ze Marek pouziva c++ builder a ten by mal byt podobny delphi.
v delphi je subor .dpr ktory riadi spustanie aplikacie
Kód:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

ak by v takomto subore nahradil TForm1 za TForm2 tak by aplikacia zacala najprv spustat okno form2 a form1 by mohlo byt vytvarane kodom okna form2. samozrejme za predpokladu ze c++ builder ma obdobny subor


Offline

Užívateľ
Užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...

to co mi poradil Fico mi nefungovalo...
skusil som tu radu s Project1;

toto je jeho obsah:
Kód:
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
      Application->Initialize();
      Application->CreateForm(__classid(TForm1), &Form1);
      Application->CreateForm(__classid(TForm2), &Form2);
      Application->Run();
   }
   catch (Exception &exception)
   {
      Application->ShowException(&exception);
   }
   catch (...)
   {
      try
      {
         throw Exception("");
      }
      catch (Exception &exception)
      {
         Application->ShowException(&exception);
      }
   }
   return 0;
}


// pridané po 58 sekundách od posledného príspevku

upravil som ho takto:

Kód:
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
      Application->Initialize();
Application->CreateForm(__classid(TForm2), &Form2);
      
Application->CreateForm(__classid(TForm1), &Form1);
      
      Application->Run();
   }
   catch (Exception &exception)
   {
      Application->ShowException(&exception);
   }
   catch (...)
   {
      try
      {
         throw Exception("");
      }
      catch (Exception &exception)
      {
         Application->ShowException(&exception);
      }
   }
   return 0;
}


// pridané po 1 minúte od posledného príspevku

a do formu som pridal riadok :

Kód:
  if ( ProgressBar1->Position == 100 )
  {
  Close();
  Form1->Show();
  }


lenze prve okno mi zavre ale druhe uz neotvori, ukonci cely program. :(


_________________
Notebook: ASUS N750JV: Windows 8.1 64bit, Intel(R) Core(TM) i7-4700HQ CPU 2.40 GHz, 12GB RAM (DDR3 1600 MHz), NVIDIA GeForce GT 750M 4GB VRAM + HD Graphics 4600, 750 GB HDD (7200 rpm), Blu-ray Reader.
Smartphone: Samsung Galaxy S5 mini
Offline

Skúsený užívateľ
Skúsený užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 11.01.09
Prihlásený: 03.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova

Skús to prehodiť:
Kód:
if ( ProgressBar1->Position == 100 ) {

    Form1->Show();
    Close();

}


Offline

Užívateľ
Užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...

nie nepomohlo to,to bude treba nejako upravit v tom Project1 ale neviem ako... nic ma nenapada


_________________
Notebook: ASUS N750JV: Windows 8.1 64bit, Intel(R) Core(TM) i7-4700HQ CPU 2.40 GHz, 12GB RAM (DDR3 1600 MHz), NVIDIA GeForce GT 750M 4GB VRAM + HD Graphics 4600, 750 GB HDD (7200 rpm), Blu-ray Reader.
Smartphone: Samsung Galaxy S5 mini
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2

nedavaj close() to zatvori aj aplikaciu ktora ho vytvorila, lebo prve okno v poradi je Main okno. daj radsej Form2->Hide()

edit:
radsej skus takto :
Kód:
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
 TForm2* Form2 = new TForm2( Application );
 Form2->Show();
      Application->Initialize();
       
Application->CreateForm(__classid(TForm1), &Form1);
       
      Application->Run();
   }
   catch (Exception &exception)
   {
      Application->ShowException(&exception);
   }
   catch (...)
   {
      try
      {
         throw Exception("");
      }
      catch (Exception &exception)
      {
         Application->ShowException(&exception);
      }
   }
   return 0;
}

a zatvorenie form2 mozes nechat tam kde je


Offline

Užívateľ
Užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...

Uz som to poriesil takto:

V Project1 som zamenil riadky:
Kód:
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm1), &Form1);


A vo Forme2 som upravil timmer takto:
Kód:
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
 ProgressBar1->Position++;

  // zatvorenie okna po dokonceni brogressbaru
  if ( ProgressBar1->Position == 100 )
  {
  Form1->Show();
  Form2->Hide();
   }

}

ale teraz mam problem zo zatvorenim programu nakoniec... nechce mi to ukoncit program cez "cerveny krizik v pravo hore! musim si vytrvorit v menu koniec s prikazom:
Kód:
Form1->Close();
   Form2->Close();

Naco vlastne sluzi funkcia Hide() ?


_________________
Notebook: ASUS N750JV: Windows 8.1 64bit, Intel(R) Core(TM) i7-4700HQ CPU 2.40 GHz, 12GB RAM (DDR3 1600 MHz), NVIDIA GeForce GT 750M 4GB VRAM + HD Graphics 4600, 750 GB HDD (7200 rpm), Blu-ray Reader.
Smartphone: Samsung Galaxy S5 mini
Offline

Skúsený užívateľ
Skúsený užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 11.01.09
Prihlásený: 03.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova

HIde() iba schová okno ( nastaví visible na false ). To znamená, že okno je stále aktívne, iba ho nie je vidieť.


_________________
Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS.
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2

Marek Adamec píše:
ale teraz mam problem zo zatvorenim programu nakoniec... nechce mi to ukoncit program cez "cerveny krizik v pravo hore! musim si vytrvorit v menu koniec s prikazom:
Kód:
Form1->Close();
   Form2->Close();

Naco vlastne sluzi funkcia Hide() ?


kedze si nevytvoril form2 pred inicializovanim aplikacie tak sa stal oknom Main a aplikaciu zatvara ono . bud si to zmen tak ako som ti predtzm navrhol alebo vo form1 v evente onClose si daj Application->terminate


Offline

Užívateľ
Užívateľ
Prednostne otvorenie druheho Formu (Form2) v Turbo C++

Registrovaný: 27.09.07
Prihlásený: 31.12.15
Príspevky: 646
Témy: 233 | 233
Bydlisko: Dubnica nad...

coldak píše:
nedavaj close() to zatvori aj aplikaciu ktora ho vytvorila, lebo prve okno v poradi je Main okno. daj radsej Form2->Hide()

edit:
radsej skus takto :
Kód:
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
 TForm2* Form2 = new TForm2( Application );
 Form2->Show();
      Application->Initialize();
       
Application->CreateForm(__classid(TForm1), &Form1);
       
      Application->Run();
   }
   catch (Exception &exception)
   {
      Application->ShowException(&exception);
   }
   catch (...)
   {
      try
      {
         throw Exception("");
      }
      catch (Exception &exception)
      {
         Application->ShowException(&exception);
      }
   }
   return 0;
}

a zatvorenie form2 mozes nechat tam kde je


toto vypise potom:
[C++ Error] Project1.cpp(13): E2450 Undefined structure 'TForm2'
[C++ Error] Project1.cpp(13): E2034 Cannot convert 'TApplication *' to 'TForm2'
[C++ Error] Project1.cpp(14): E2315 'Show' is not a member of 'TForm2', because the type is not yet defined
[C++ Warning] Project1.cpp(27): W8004 'Form2' is assigned a value that is never used
[C++ Error] Project1.cpp(40): E2451 Undefined symbol 'exception'


_________________
Notebook: ASUS N750JV: Windows 8.1 64bit, Intel(R) Core(TM) i7-4700HQ CPU 2.40 GHz, 12GB RAM (DDR3 1600 MHz), NVIDIA GeForce GT 750M 4GB VRAM + HD Graphics 4600, 750 GB HDD (7200 rpm), Blu-ray Reader.
Smartphone: Samsung Galaxy S5 mini
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2

tak skus dat to initialize pred TForm2* Form2 = new TForm2( Application );


 [ Príspevkov: 14 ] 


Prednostne otvorenie druheho Formu (Form2) v Turbo C++



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

lazarus - otvorenie noveho formu

v Delphi, Visual Basic

4

638

20.12.2011 20:51

wiini

V tomto fóre nie sú ďalšie neprečítané témy.

Zaciatky s Turbo C++ (C++explorer)

v Assembler, C, C++, Pascal, Java

11

1243

15.07.2009 11:45

stopa27

V tomto fóre nie sú ďalšie neprečítané témy.

Turbo C++ a príkaz

v Assembler, C, C++, Pascal, Java

1

519

29.12.2008 20:42

neutronmind

V tomto fóre nie sú ďalšie neprečítané témy.

vytvorenie okna + tlacitka (Turbo C++)

v Assembler, C, C++, Pascal, Java

7

1417

23.05.2010 20:28

capricorn7

V tomto fóre nie sú ďalšie neprečítané témy.

tcom z turbo 2 na turbo 3

v Siete

0

521

14.03.2011 18:56

labtec222

V tomto fóre nie sú ďalšie neprečítané témy.

zabranenie duplicitneho odoslania formu

v JavaScript, VBScript, Ajax

5

416

07.10.2010 14:49

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

form vo vnutri dalsieho formu

v HTML, XHTML, XML, CSS

4

592

18.03.2009 10:19

myxall

V tomto fóre nie sú ďalšie neprečítané témy.

drag and drop (z formu na form)

v Delphi, Visual Basic

2

850

03.06.2009 14:38

B.A.X.O

V tomto fóre nie sú ďalšie neprečítané témy.

po konci formu mi da novy riadok

v HTML, XHTML, XML, CSS

3

397

14.01.2012 14:16

1daemon1

V tomto fóre nie sú ďalšie neprečítané témy.

vymena HDD za SSD alebo inu pamatovu formu

v Notebooky a netbooky

3

950

27.04.2009 21:18

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

Mám sa učiť C ++/objective C/ C#?

v Assembler, C, C++, Pascal, Java

5

733

08.07.2014 20:40

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

riadenie druheho pc

v Ostatné programy

5

1101

17.11.2006 22:37

krocan

V tomto fóre nie sú ďalšie neprečítané témy.

odstranenie druheho win

v Operačné systémy Microsoft

2

371

27.11.2019 19:51

milan1966

V tomto fóre nie sú ďalšie neprečítané témy.

Pripojenie druhého routra

v Siete

2

858

03.01.2012 1:16

MFSBoban

V tomto fóre nie sú ďalšie neprečítané témy.

zapojenie druheho routeru

v Siete

2

746

01.09.2012 0:19

mtxd

V tomto fóre nie sú ďalšie neprečítané témy.

Zapojenie druheho monitora

v Monitory, televízory a projektory

10

1129

14.01.2019 15:36

Patrikan



© 2005 - 2024 PCforum, edited by JanoF