PDA

Ver la Versión Completa : Problema de foco con TUpDown


Peterman
27-05-2007, 18:01:23
Buenas, estoy tratando de terminar mi primer e inacabable programa y me ha salido un error que me deja a cuadros:

Tengo un solo form,ok? tengo una TPerformanceGraph, varios botones que interactuan sobre ella y joder, he puesto un TUpDown, y para probarlo le he metido en el código un ShowMessage() para que me muestre el número que recoge dicho TUpDown...El ShowMessage se lo he puesto en el OnChangingEx, tambien he probado en el evento OnChanging y el OnClick y siempre me da el mismo error:

"Cuando pincho sobre el TUpDown, me muestra el ShowMessage correctamente, con el valor correcto,ok!!! Pero después de esto pinche donde pinche es como si volviera a pulsar el TUpDown...¿que pasa? No puedo ni cerrar el programa, pinche donde pinche es como si pulsara de nuevo el TUpDown y me vuelve a salir el ShowMessage"

Perdonen x las molestias causadas, y gracias por su interes desinteresado...gracias!

droguerman
27-05-2007, 18:05:48
no tendrás algo de código por ahi que puedas facilitar para revisarlo

Peterman
27-05-2007, 19:08:13
Estas dos son 2 opciones con las que he intentado hacerlo; es que me parece un error de Delphi, si código apenas hay...es muy raro: clickeo para ver si aumentarlo o para decrementarlo y se me queda el foco en él; haga lo que haga, cliquee donde cliquee, es como si estubiera volviendo a clickear sobre este...



void __fastcall TFPrincipal::UpDown3Changing(TObject *Sender,
bool &AllowChange)
{
// El Edit55 es el campo que va asociado al TUpDown.
ShowMessage(Edit55->Text);
}



void __fastcall TFPrincipal::UpDown3ChangingEx(TObject *Sender,
bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
ShowMessage(NewValue);
}


P.D.: Ya sé que todo esto lo estoy haciendo para C++ Builder pero creo que es un error conceptual y no depende ni de C++Builder ni de Delphi. Ahh!!! En la misma aplicación ya tengo otros componentes como estos usandose y funcionan perfectamente. Es un erro muy raro!!!


P.D.2: Nunca me acuerdo de cual son las etiquetas para insertar código. Perdonadme!!!

Lepe
27-05-2007, 19:17:22
Es más que probable que el evento OnExit de ese control (si lo tiene, porque no los sé) esté lanzando el evento OnChanging, cancelando así la salida del foco.

Sustituye el ShowMessage por un TMemo donde escribas el valor actual, quizás se solucione. Intuyo que el Showmessage está parando la ejecución de la aplicación y al pulsar el botón aceptar, envía el foco al último control que lo tenía... que es precisamente el TUpDown.

Al colocar un memo, no interfieres con el foco de los controles.

También podría ocurrir que al consultar Edit5->text esté internamente lanzando de nuevo el evento, por lo que se produce un blucle de mensajes.

Sinceramente, habría que ver el código fuente de ese TUpDown. Ya por curiosidad: ¿Es el estandar de delphi o es un control descargado de la web?

Saludos.

Peterman
27-05-2007, 21:49:03
Voy a probar ahora mismo con lo que me has dicho...Es el componente estandar de Borland... Estoy utilizando el Borland C++Builder 6.


No sé porque me da de que tu respuesta me va a solucionar el problema...gracias, ahora mismo te cuento.:)

Peterman
27-05-2007, 21:58:42
SOLUCIONADO

Joder , que alegria, de lujo Lepe... era eso, algun fallo paranoico del TUpDown con el ShowMessage y de la madre que pario al Borland (del cual estoy muy satisfecho)...mu bien gracias entonces y nada más, pa lante.... de lujo.


Gracias a todos....casi os quiero, de verdad.

:) :D :p ;)

Chaja
28-12-2013, 06:27:40
Es más que probable que el evento OnExit de ese control (si lo tiene, porque no los sé) esté lanzando el evento OnChanging, cancelando así la salida del foco.

Sustituye el ShowMessage por un TMemo donde escribas el valor actual, quizás se solucione. Intuyo que el Showmessage está parando la ejecución de la aplicación y al pulsar el botón aceptar, envía el foco al último control que lo tenía... que es precisamente el TUpDown.

Al colocar un memo, no interfieres con el foco de los controles.

También podría ocurrir que al consultar Edit5->text esté internamente lanzando de nuevo el evento, por lo que se produce un blucle de mensajes.

Sinceramente, habría que ver el código fuente de ese TUpDown. Ya por curiosidad: ¿Es el estandar de delphi o es un control descargado de la web?

Saludos.


Lepe.... no se como haces para tener tanto conocimiento.... me pasaba algo parecido, tengo un UpDown el cual cambia un periodo de fechas y de ahi, lanzo una consulta de movimientos, tengo una barra de estado para decirle al user que esta haciendo el prog y ponia un Application.ProcessMessages para que se vean los mensajes. Cuando termianaba la consulta hacia un Application.ProcessMessages y el UpDown Mantenia el foco , por lo que hacias clik donde sea , esto hacia funcionar el UpDown... Gracias por la ayuda

Lepe
31-12-2013, 10:14:59
Asias, eso fue hace 7 años... ahora sé menos y cada día que pasa menos aún :D

Me alegro que te sirviera :).

PD: Nunca dejes de mirar el código fuente de Delphi y estos foros... así se aprende.

Saludos