gracias zelion!!!<br>prepare un codigo ejemplo donde me dal el problema<br>si cambias el puntero "buscar" poniendolo en un ambito publico( antecediendo a la definicion de la clase) no te dara el error<br>es realmenter raro
<br><br>//=================================================================<br>#include <wx/wx.h><br>#include <wx/grid.h><br>using namespace std;<br>class frame:public wxFrame{<br> public:<br> frame(wxWindow* p,const string& t):wxFrame(p,-1,t){Centre();}
<br>};<br>frame* mainframe; <br><br>class form:public wxDialog{<br> <br><br> protected: // PROPIEDADES<br> friend class textbox; // acceso a la clase textbox
<br> friend class button; // acceso a la clase button<br> wxBoxSizer* layout; // sizer principal<br> wxBoxSizer* page; // sizer de contenido
<br> wxBoxSizer* header; // sizer cabecera<br> wxBoxSizer* body; // sizer del cuerpo del formulario<br> wxBoxSizer* footer; // sizer de pie de pagina
<br> wxGrid* grid; // contiene el grid de la ventana<br> wxButton* acept; // boton de aceptar<br> wxButton* cancel; // cancelar
<br> wxButton* find; // buscar<br><br> wxTextCtrl* buscar; // el puntero fantasma<br><br> // EVENTOS
<br> void acept_procs(wxMouseEvent&); // ocurre cuando se preciona el boton de aceptar<br> void cancel_procs(wxMouseEvent&); // ocurre cuando se preciona el boton de cancelar
<br> void find_procs(wxMouseEvent&); // ocurre cuando se preciona el boton de buscar<br> void keypress(wxKeyEvent&); // ocurre cuando se preciona el boton de buscar
<br> <br> public: // CONSTRUCTORES<br> form(const string&); // constructor sobrecargado<br> void resize(); // recalcula el tamano de la ventana
<br> void refresh(); // actualiza los objetos con la data<br>};<br><br>// constructor sobrecargado <br> form::form(const string& caption):wxDialog(mainframe,-1,caption){
<br> // objetos principales<br> new wxPanel(this); <br> layout = new wxBoxSizer(wxHORIZONTAL);<br> SetSizer(layout);<br><br> // enmarcando la pagina<br> layout->Add(15,0,0,wxEXPAND);
<br> layout->Add(page = new wxBoxSizer(wxVERTICAL),0,wxEXPAND);<br> layout->Add(15,0,0,wxEXPAND);<br> <br> page->Add(header = new wxBoxSizer(wxHORIZONTAL),0,wxEXPAND);<br> page->Add(body = new wxBoxSizer(wxVERTICAL),0,wxEXPAND);
<br> page->Add(footer = new wxBoxSizer(wxHORIZONTAL),0,wxEXPAND);<br> <br> // configurando marge<br> header->Add(0,15);<br> footer->Add(0,15);<br><br> <br> // carga los parametros
<br> header->Add(5,35);<br> wxBoxSizer* parameters_panel;<br> header->Add(parameters_panel=new wxBoxSizer(4),wxEXPAND);<br> buscar=new wxTextCtrl(this,-1);<br> parameters_panel->Add(buscar,wxEXPAND);
<br> buscar->SetFocus();<br> buscar->SetValue("esta es la cajita fantasma....presiona enter por favor!");<br> header->Add(find=new wxButton(this,wxID_FIND));<br> find->SetDefault();
<br> <br> // cargando el grid<br> body->Add(grid=new wxGrid(this,-1,wxDefaultPosition,wxSize(700,600)));<br> grid->Connect(wxEVT_KEY_DOWN,wxKeyEventHandler(form::keypress));<br> grid->CreateGrid(5,6);
<br><br> // cargando botones<br> footer->Add(1,1,1,wxEXPAND);<br> footer->Add(acept=new wxButton(this,wxID_OK));<br> footer->Add(cancel=new wxButton(this,wxID_CANCEL));<br> Connect(wxID_OK ,wxEVT_COMMAND_BUTTON_CLICKED,wxMouseEventHandler(form::acept_procs));
<br> Connect(wxID_CANCEL ,wxEVT_COMMAND_BUTTON_CLICKED,wxMouseEventHandler(form::cancel_procs));<br> Connect(wxID_FIND ,wxEVT_COMMAND_BUTTON_CLICKED,wxMouseEventHandler(form::find_procs));<br><br><br> resize();
<br> Centre();<br> <br><br><br> }<br><br>// recalcula el tamano de la ventana <br> void form::resize(){<br> layout->SetSizeHints(this);<br> }<br><br><br><br>// ATENCION ATENCION ATENCION ATENCION ATENCION ATENCION
<br>// AQUI ES DONDE DA EL ERROR<br> void form::keypress(wxKeyEvent& x){<br> if(x.GetKeyCode()==27){<br> buscar->SetFocus(); // EXACTAMENTE AQUI<br> return;<br> }<br>
x.Skip();<br> }<br><br><br>// ocurre cuando se preciona el boton de aceptar <br> void form::acept_procs(wxMouseEvent& x){<br> EndModal(123);<br> }<br>// ocurre cuando se preciona el boton de cancelar
<br> void form::cancel_procs(wxMouseEvent&){<br> EndModal(-1);<br> } <br>// ocurre cuando se preciona el boton de cancelar <br> void form::find_procs(wxMouseEvent&){
<br> wxMessageBox("voy primero a poner un texto en la cajita de busqueda asi te das cuenta de que el puntero buscar funciona");<br> buscar->SetValue("confirmado!!..el puntero funciona");
<br> wxMessageBox("ejecuto un programa que busca la informacion y le doy el enfoque al grid para seleccionar el registro que desee");<br> grid->SetCellValue(0, 0, "ahora es el momento de la verdad!!...presiona escape para que de el error");
<br> grid->AutoSizeColumns();<br> grid->SetFocus(); <br> }<br><br><br>class app:public wxApp{<br> bool OnInit(){<br> mainframe=new frame(NULL,"fradfasd");<br> mainframe->Show();
<br> form* test=new form("prueba del problema");<br> test->ShowModal(); <br> }<br>};<br>IMPLEMENT_APP(app)<br>//=================================================================<br>
//=================================================================<br>
// fin del programa<br>