I still need your help!
In the program that I make to keep gas and H2O consumption under control, I have a problem entering two dialogues, namely: "list of readings not sent", in italian language:"lista delle letture non inviate"
and "information on reading" in italian language: "informazioni sulla lettura", the first time I call them everything goes smoothly, but, I call this second time them a wxdebug dialog box that writes:
Code: Select all
./src/common/wincmn.cpp(1336): assert "!GetChildren().Find((wxWindow*)child)" failed in AddChild(): AddChild() called twice
Code: Select all
./src/msw/window.cpp(1298): assert "!m_oldWndProc" failed in SubclassWin(): subclassing window twice?
I don't know how to solve this problem,
on follow I post the first function: "list of readings not sent:"
Code: Select all
void progletture2 :: OnNonInviate (wxCommandEvent & event)
{
dlgnoninviate = Noninviate.Create(this, wxID_ANY,
wxT("Lista delle letture non inviate"),
wxDefaultPosition, wxSize(400, 400));
Noninviate.nnoninviate = 0;
nulettura = elenco_letture->GetFirstItem();
while (nulettura)
{
nucontatore = elenco_letture->GetItemParent(nulettura);
if (nucontatore != elenco_letture->GetRootItem())
{
datiletcontatore = elenco_letture->GetItemText(nucontatore, COL_DATA);
datiletdatacomp = elenco_letture->GetItemText(nulettura, COL_DATA);
}
if (elenco_letture->GetItemText(nulettura, COL_INVIATO) == "No")
{
Noninviate.SetContatore (datiletcontatore);
Noninviate.SetDataLettura(datiletdatacomp);
Noninviate.SetNumLettura(elenco_letture->GetItemText(nulettura, COL_LETTURA));
Noninviate.init();
}
nulettura = elenco_letture->GetNextItem(nulettura);
}
dlgnoninviate->Connect(ID_ninvlist, wxEVT_TREELIST_ITEM_ACTIVATED,
wxCommandEventHandler(noninviate :: OnActivate));
if (dlgnoninviate->Show(TRUE) == wxID_OK)
dlgnoninviate->Destroy();
}
Code: Select all
void noninviate :: OnActivate (wxCommandEvent & event)
{
int fatto = 0;
noninviateselected = lista_letture->GetSelection();
nulettura = elenco_letture->GetFirstItem();
while (nulettura)
{
if (lista_letture->GetItemText(noninviateselected, COL_CONTATORE) == elenco_letture->GetItemText(nulettura, COL_CONTATORE))
{
ShowInfo.SetInfoContatore(elenco_letture->GetItemText(nulettura, COL_CONTATORE));
while (fatto == 0)
{
nulettura = elenco_letture->GetNextItem(nulettura);
if (lista_letture->GetItemText(noninviateselected, COL_DATA_LETTURA) == elenco_letture->GetItemText(nulettura, COL_CONTATORE))
{
ShowInfo.SetInfoDataLettura(elenco_letture->GetItemText(nulettura, COL_CONTATORE));
ShowInfo.SetInfoNumLettura(elenco_letture->GetItemText(nulettura, COL_DATA_LETTURA));
ShowInfo.SetInfoInviato(elenco_letture->GetItemText(nulettura, COL_NUM_LETTURA));
fatto = 1;
}
}
}
nulettura = elenco_letture->GetNextItem(nulettura);
}
dlgshowinfo = ShowInfo.Create(this, wxID_ANY,
"informazioni sulla lettura",
wxDefaultPosition, wxSize(650, 350));
if (dlgshowinfo->Show(TRUE)== wxID_OK)
{
dlgshowinfo->Destroy();
}
}
marco_84