I've a strange problem.
First frame require a user input of data.
Data are stored in a binary file.
When i call second frame data are showed in grad in correct mode.
Now if i want to activate second frame from first to see data, program ends.
I think that the code don't open file in correct mode.
Here the code
Code: Select all
#include <fstream>
#include "Finestra_Visualizza.h"
#include "App_ArchivioApp.h"
using namespace std;
fstream file1;
struct alunno
{
string cognome;
string nome;
string classe;
string sezione;
string data;
};
struct alunno a[1000];
int k;
//(*InternalHeaders(Finestra_Visualizza)
#include <wx/string.h>
#include <wx/intl.h>
//*)
//(*IdInit(Finestra_Visualizza)
const long Finestra_Visualizza::ID_GRID1 = wxNewId();
const long Finestra_Visualizza::ID_BUTTON1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(Finestra_Visualizza,wxFrame)
//(*EventTable(Finestra_Visualizza)
//*)
END_EVENT_TABLE()
Finestra_Visualizza::Finestra_Visualizza(wxWindow* parent,wxWindowID id,const wxPoint& pos,const wxSize& size)
{
//(*Initialize(Finestra_Visualizza)
wxBoxSizer* BoxSizer1;
Create(parent, wxID_ANY, _("Dati degli alunni"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY"));
BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
grdati = new wxGrid(this, ID_GRID1, wxDefaultPosition, wxSize(640,239), 0, _T("ID_GRID1"));
grdati->CreateGrid(0,5);
grdati->EnableEditing(true);
grdati->EnableGridLines(true);
grdati->SetRowLabelSize(25);
grdati->SetColLabelValue(0, _("Nome"));
grdati->SetColLabelValue(1, _("Cognome"));
grdati->SetColLabelValue(2, _("Classe"));
grdati->SetColLabelValue(3, _("Sezione"));
grdati->SetColLabelValue(4, _("Data Nascita"));
grdati->SetDefaultCellFont( grdati->GetFont() );
grdati->SetDefaultCellTextColour( grdati->GetForegroundColour() );
BoxSizer1->Add(grdati, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
cmdchiudi = new wxButton(this, ID_BUTTON1, _("Chiudi Finestra"), wxDefaultPosition, wxSize(392,32), 0, wxDefaultValidator, _T("ID_BUTTON1"));
BoxSizer1->Add(cmdchiudi, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
SetSizer(BoxSizer1);
BoxSizer1->Fit(this);
BoxSizer1->SetSizeHints(this);
Connect(ID_GRID1,wxEVT_GRID_CELL_LEFT_CLICK,(wxObjectEventFunction)&Finestra_Visualizza::OngrdatiCellLeftClick);
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&Finestra_Visualizza::OncmdchiudiClick);
Connect(wxID_ANY,wxEVT_CLOSE_WINDOW,(wxObjectEventFunction)&Finestra_Visualizza::OnClose);
//*)
file1.open("archivio.dat",ios::in|ios::binary);
k=0;
while (!file1.eof())
{
file1.read((char*)&a[k],sizeof(struct alunno));
k++;
}
file1.close();
grdati->AutoSize();
wxString s;
int i=0;
int j=0;
//grdati->CreateGrid(10,5);
grdati->EnableEditing(true);
grdati->EnableGridLines(true);
grdati->AppendRows(k);
for (i=0;i<k;i++)
{
grdati->SetCellValue(i,j,wxString(a[i].cognome));
}
j++;
for (i=0;i<k;i++)
{
grdati->SetCellValue(i,j,wxString(a[i].nome));
}
j++;
for (i=0;i<k;i++)
{
grdati->SetCellValue(i,j,wxString(a[i].classe));
}
j++;
for (i=0;i<k;i++)
{
grdati->SetCellValue(i,j,wxString(a[i].sezione));
}
j++;
for (i=0;i<k;i++)
{
grdati->SetCellValue(i,j,wxString(a[i].data));
}
}
Finestra_Visualizza::~Finestra_Visualizza()
{
//(*Destroy(Finestra_Visualizza)
//*)
}
void Finestra_Visualizza::OnClose(wxCloseEvent& event)
{
//App_ArchivioFrame * tempfrm=new App_ArchivioFrame(NULL);
//tempfrm->Show();
Close();
}
void Finestra_Visualizza::OncmdchiudiClick(wxCommandEvent& event)
{
Close();
//App_ArchivioFrame->Show(True);
}
void Finestra_Visualizza::OngrdatiCellLeftClick(wxGridEvent& event)
{
}