gracias zelion<br>jajajjajjaa<br>tenia mucho tiempo dando vueltas sobre eso <br><br>aunque ya encontre una solucion alternativa es bueno saber cual es la real causa del problema asi no se queda uno con la duda sobre las librerias
<br><br>por otro lado<br><br>lo que no entiendo es porque en un evento si y en otro no<br><br>porque en el evento del boton funciono muy bien<br><br>puedes percatarte en el ejemplo<br><br>este comportamiento se corresponde un patron o es aleatorio?
<br><br>me gusta usar connect, es mas claro para mi <br><br>es seguro usarlo?<br><br>gracias!<br><br><br><br><br><div><span class="gmail_quote">El día 2/01/08, <b class="gmail_sendername">ZeLion</b> <<a href="mailto:Zelion_cracking@yahoo.es">
Zelion_cracking@yahoo.es</a>> escribió:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link="#808040" vlink="purple" lang="ES">
<div>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Hola de nuevo Pedro.</span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Veras, he mirado un poco mas el codigo, y
no tienes declarada la tabla de eventos, por eso no se procesa el evento del 'form'</span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Para que se procese el evento en el form
tienes que declarar la tabla de eventos:</span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"> </span></font></p>
<p style=""><font color="#010001" face="Courier New" size="2"><span style="font-size: 10pt; color: rgb(1, 0, 1);" lang="EN-GB">BEGIN_EVENT_TABLE</span></font><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB">
( <font color="#010001"><span style="color: rgb(1, 0, 1);">form</span></font>, <font color="#010001"><span style="color: rgb(1, 0, 1);">wxDialog</span></font> )</span></font></p>
<p style="text-indent: 35.4pt;"><font color="#010001" face="Courier New" size="2"><span style="font-size: 10pt; color: rgb(1, 0, 1);">EVT_KEY_DOWN</span></font><font face="Courier New" size="2"><span style="font-size: 10pt;">
(<font color="#010001"><span style="color: rgb(1, 0, 1);">form</span></font>::<font color="#010001"><span style="color: rgb(1, 0, 1);">keypress</span></font>) //
Declarar el evento de tecla pulsada</span></font></p>
<p><font color="#010001" face="Courier New" size="2"><span style="font-size: 10pt; color: rgb(1, 0, 1);" lang="EN-GB">END_EVENT_TABLE</span></font><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB">
()</span></font></p>
<p><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB"> </span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">De esta forma puedes hacer:</span></font></p><span class="q">
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"> </span></font></p>
<p style=""><font color="blue" face="Courier New" size="2"><span style="font-size: 10pt; color: blue;" lang="EN-GB">void</span></font><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB"> <font color="#010001">
<span style="color: rgb(1, 0, 1);">form</span></font>::<font color="#010001"><span style="color: rgb(1, 0, 1);">keypress</span></font>(<font color="#010001"><span style="color: rgb(1, 0, 1);">wxKeyEvent</span></font>&
<font color="#010001"><span style="color: rgb(1, 0, 1);">x</span></font>)</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB">{</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB"> </span></font></p></span>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB"> <font color="#010001"><span style="color: rgb(1, 0, 1);">wxString</span></font> <font color="#010001"><span style="color: rgb(1, 0, 1);">
aa</span></font> = <font color="blue"><span style="color: blue;">this</span></font>-><font color="#010001"><span style="color: rgb(1, 0, 1);">GetName</span></font>();</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;" lang="EN-GB"> </span></font><font color="blue" face="Courier New" size="2"><span style="font-size: 10pt; color: blue;">if</span></font>
<font face="Courier New" size="2"><span style="font-size: 10pt;"> (0 == <font color="#010001"><span style="color: rgb(1, 0, 1);">aa</span></font>.<font color="#010001"><span style="color: rgb(1, 0, 1);">Cmp</span></font>(
<font color="#010001"><span style="color: rgb(1, 0, 1);">_T</span></font>(<font color="#a31515"><span style="color: rgb(163, 21, 21);">"dialog"</span></font>))) //
Si es el form</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;"> {</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;"> <font color="#010001"><span style="color: rgb(1, 0, 1);">buscar</span></font>-><font color="#010001"><span style="color: rgb(1, 0, 1);">
SetFocus</span></font>(); //
Ahora si que te deja, ya que 'this=form'</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;"> <font color="#010001"><span style="color: rgb(1, 0, 1);">return;</span></font><u></u></span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;"> }</span></font></p>
<p style=""><font face="Courier New" size="2"><span style="font-size: 10pt;">
<font color="#010001"><span style="color: rgb(1, 0, 1);">x</span></font>.<font color="#010001"><span style="color: rgb(1, 0, 1);">Skip</span></font>();<u></u></span></font></p>
<p><font face="Courier New" size="2"><span style="font-size: 10pt;"> }</span></font><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"></span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">}</span></font></p>
<p><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"> </span></font></p>
<div>
<p style="text-align: right;" align="right"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">.: ZeLion :.</span></font></p>
</div>
<div style="border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color blue; border-width: medium medium medium 1.5pt; padding: 0cm 0cm 0cm 4pt;">
<div>
<div style="text-align: center;" align="center"><font face="Times New Roman" size="3"><span style="font-size: 12pt;">
<hr align="center" size="2" width="100%">
</span></font></div>
<p><b><font face="Tahoma" size="2"><span style="font-size: 10pt; font-family: Tahoma; font-weight: bold;">De:</span></font></b><font face="Tahoma" size="2"><span style="font-size: 10pt; font-family: Tahoma;">
<a href="mailto:cconclase-bounces@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">cconclase-bounces@listas.conclase.net</a>
[mailto:<a href="mailto:cconclase-bounces@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">cconclase-bounces@listas.conclase.net</a>] <b><span style="font-weight: bold;">En nombre de
</span></b>Pedro Mateo<span class="q"><br>
<b><span style="font-weight: bold;">Enviado el:</span></b> lunes, 31 de diciembre
de 2007 16:04<br></span><span class="q">
<b><span style="font-weight: bold;">Para:</span></b> Lista
de correo sobre C y C++<br></span>
<b><span style="font-weight: bold;">Asunto:</span></b> [Bulk] Re: [C con Clase]
[Bulk] problema con puntero utilizando wxwidgets!</span></font></p>
</div><div><span class="e" id="q_1173b149450c1637_6">
<p><font face="Times New Roman" size="3"><span style="font-size: 12pt;"> </span></font></p>
<p><font face="Times New Roman" size="3"><span style="font-size: 12pt;">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</span></font></p>
</span></div></div>
</div>
</div>
<br>_______________________________________________<br>Lista de correo Cconclase <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
</a><br>Bajas: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote>
</div><br>