Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Liberar el foco de un objeto (https://www.clubdelphi.com/foros/showthread.php?t=27354)

Velia 18-11-2005 00:23:27

Liberar el foco de un objeto
 
Hola
Cuando tengo el foco en un objeto mas presisamente un maskedit y el usuario ingresa cierta cadena no permitada: tiene dos opciones la primera es corregir la cadena que se ingresa o salir de la aplicación

Cuando sale del formulario el foco queda en el maskedit con lo que cuando vuelve a entrar se produce un error de compilación.
Por lo que quiero liberar el foco en el evento onclose del formulario.

intenté haciendo:

maskedit1.free;
maskedit1.nil;

pero ninguno me soluciona el problema, el foco sigue existiendo.
¿Cómo puedo liberar el foco del formulario?

Gracias por la ayuda
Saludos

Sotrono 18-11-2005 00:28:48

Hola, como va?
Podes darle el foco a otro componente, ej:

Button1.SetFocus;

Saludos..

jhonny 18-11-2005 00:31:35

Cita:

Empezado por Velia
se produce un error de compilación.

Que error es?, seria muy util saberlo pues quiza el error no sea porque el maskedit tenga el foco, puede ser que al abrir la aplicacion estas enviando el foco a un objeto que no exista aun o que quiza este invisible.

Velia 18-11-2005 00:54:08

Perdon la molestia ya solucioné el problema
 
Como estoy trabajando con DataSnap y tengo un monton de clientDataSet abiertos habeces confundo los errores y el procedimiento comentado anteriormente me hacia suponer que era el foco que quedaba activado.
Controlando y corrijiendo otras cositas solucione el problema.

Pero me quedó la duda de cómo puedo liberar el foco de un objeto ya que intenté liberar el objeto con free pero el foco sigue apuntándolo

maskedit1.free;
maskedit1:=nil

y el error que me tira delphi es: exception class EAccessViolation with message ' Access Violation at address 0044FD50 in module ' .exe' Read of address 000000070

Saludos y Gracias por la ayuda

Sotrono 18-11-2005 01:08:08

Cuando liberas un objeto (Objeto.Free) lo estas destruyendo, por lo tanto a cualquier metodo o propiedad que quieras acceder se va a producir un error porque ese objeto ya no existe.
Para que se pierda el foco de un objeto tenes que darle el foco a otro.

Bytes...


La franja horaria es GMT +2. Ahora son las 17:28:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi