Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2005
niñotaliban niñotaliban is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
niñotaliban Va por buen camino
Clic a un tbutton y que no se quede el foco

Seguramente debe ser muy fácil, pero no lo consigo. He probado jugando con las propiedades: tabstop, taborder, setfocus. Esta última cuando quiero fijar el foco en un objeto, al compilar me dice "Cannot focus a disabled or invisible window"... (esto último me tiene un poco mosca) y bueno es verdad que tengo algun panel desactivado y algún otro invisible, pero lo he probado con todo activado y visible y sigue con el dichoso error.

Si alguien me puede guiar para seguir investigando y probando se lo agradezco.

Gracias.
Responder Con Cita
  #2  
Antiguo 17-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Utiliza el componetne SpeedButton en la paleta Additional, este no toma el foco
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 17-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Pero el "foco" tendrá que estar en algún sitio no? A mí se me ocurre -independientemente de que no vea del todo claro para qué perseguir algo así- aprovechar el evento "OnClick" del botón para darle en ese momento el foco a otro componente. Debería funcionarte. No me importaría conocer el motivo que te lleve a obrar de ese modo. Por otro lado el efecto que se aprecia haciendo lo que te digo no me convence tampoco: el botón obtiene, efectivamente, el foco, y esto se aprecia, pero, automáticamente, el foco pasa a otro componente... ¡menudo lío! ¿A ti qué te parece?

Se me ocurre que lo que quieras es que, sin más, el botón no tome el "foco" de ninguna de las maneras... si es así tal vez podría hacerse de otras maneras, pero, se me ocurre a bote pronto que simules un botón con un "TPanel", ya que este (si no me confundo) no toma el "foco" del usuario.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 17-11-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por niñotaliban
bueno es verdad que tengo algun panel desactivado y algún otro invisible, pero lo he probado con todo activado y visible y sigue con el dichoso error.
Estás seguro de eso, revisa bien las propiedades...

Hasta Luego -
__________________
No todo es como parece ser...
Responder Con Cita
  #5  
Antiguo 17-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Troy
Utiliza el componetne SpeedButton en la paleta Additional, este no toma el foco
A ver, David, repite conmigo, otra solución estriba en utilizar el componente "TSpeedButton", de la paleta "Additional", otra solución estriba en utilizar el componente "TSpeedButton", de la paleta "Additional"... gracias Troy.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 17-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
gracias Troy
¿Qué no es Troi?

// Saludos
Responder Con Cita
  #7  
Antiguo 17-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por roman
¿Qué no es Troi?
¡Que lo aclare Tro... de una vez por todas!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 17-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por roman
¿Qué no es Troi?
Es que él le dá un poco de estilol
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 17-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por dec
¡Que lo aclare Tro... de una vez por todas!
La firma lo dice todo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 17-11-2005
niñotaliban niñotaliban is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
niñotaliban Va por buen camino
que burro!! no he caído en el speedbutton!. Esque a veces te ciegas en algo y no ves lo de alrededor. Bueno esto me quita el problema que planteaba. pero...

¿y si no quisiera ver el foco por ninguna parte, o bien dejarlo en algún sitio y que no se mueva? ¿tengo que poner los taborder a 0 y los tabstop a false, a todo lo demas?

Lo siento si parece una chorrada lo que persigo, pero biene a ser que no quiero foco en mi formulario, y si tiene que estar, que no se mueva. cosa que con el setfocus no me está tragando, pero estoy revisando los paneles como me aconsejó lucasarts_18.

Muchas gracias por las respuestas. me he quedado sorprendido de la rapidez y la atención.
Responder Con Cita
  #11  
Antiguo 17-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Troi
La firma lo dice todo
Joroba, pues es verdad, si es un león, como suele decirse, me hace pedazos.


Cita:
Empezado por niñotalibán
¿y si no quisiera ver el foco por ninguna parte, o bien dejarlo en algún sitio y que no se mueva? ¿tengo que poner los taborder a 0 y los tabstop a false, a todo lo demas?
Es que creo que no tiene que ver, por ejemplo, la propiedad "TabOrder" con que el control en cuestión no pueda tomar el "foco" del usuario. Sirve, claro está, para cuando uno recorre los controles del formulario con el teclado, utilizando, precisamente, la tecla "Tabulador". Sin embargo, si el usuario quiere situar el foco en un control bastaría conque utilizase el ratón para ello. Con la propiedad "TabStop" ocurre un poco lo mismo.

Lo que me parece un tanto ilógico es lo siguiente: los controles no solamente pueden tomar el foco, sino que deben hacerlo, porque el usuario tenga conocimiento de en qué control se encuentra el foco, valga la redundancia, si vale. Quiero decir que a bote pronto se me ocurre que un formulario en el que no pudiera estar el foco en otro sitio que en el propio formulario sería un formulario... sin controles.

Otra cosa sería "ocultar el cursor" de un "TEdit", por ejemplo, de manera que, aun teniendo el foco dicho "TEdit" no se viera el cursor, que es, precisamente, lo que señala que ese "TEdit" en concreto tiene el foco del usuario (¿Será electricista el usuario y se dedicará a ir poniendo focos en escenarios de fiestas, comuniones y bautizos?) en ese momento.

Esta última cuestión se ha tocado hoy mismo en estos Foros. Quizá te diera alguna idea el Hilo en que se llevó a cabo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #12  
Antiguo 17-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
La verdad a mi me intriga demasiado el saber porque no quieres que se vea el foco en tu formulario.
¿Puedo preguntar proqué no quieres ver el foco en el formulario?
Tal vez a alguien se le ocurra la forma de hacerlos si nos explicas proque no quieres ver el foco en el formulario.
__________________

Responder Con Cita
  #13  
Antiguo 18-11-2005
niñotaliban niñotaliban is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
niñotaliban Va por buen camino
es una mera cuestión estética, no quiero que se vea el foco en ningun lugar (salvo en el edit si hace falta. y lo de ocultar el cursor es genial, ya lo leí buscando información antes de postear).

Os habeis fijado en la calculadora de windows? el foco no se ve por ningún lugar, tan simple y tan bien hecha, es genial.

Aunque como dice dec talvez si que se le puede llamar formulario sin controles, o descontrolado
Responder Con Cita
  #14  
Antiguo 18-11-2005
niñotaliban niñotaliban is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
niñotaliban Va por buen camino
y poque demonios no puedo hacer un setfocus teniendo un panel desactivado (no al que le doy el focus)?? o invisible.
Responder Con Cita
  #15  
Antiguo 18-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
El punto es:
No existe ninguna razón lógica para ponerle el foco a un control que esta desactivado o invisible.

supongo que por eso no puedes ponerle el foco a un control que esta desactivado o invisible.

Revisa muy bien las propiedades del control cuando le pasas el foco, ya que si el control esta activado y visible, no debe tener ningún problema en recibir el foco. Toma en cuenta que si desactivas un Group Panel, ningúno de los controles contenidos en el mismo podrán recibir el foco.
__________________

Responder Con Cita
  #16  
Antiguo 18-11-2005
niñotaliban niñotaliban is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
niñotaliban Va por buen camino
Revisando me he dado cuenta que deshabilitaba un panel por codigo y luego intentaba pasar el foco a un elemento dentro de este.

Pero ahora lo que no entiendo es porqué me dice "cannot focus a disabled or invisible window" si ago lo siguiente. (y no hay nada más, un form, un edit, y el procedure de aquí abajo):
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.setfocus;
end;


En cambio si quito el formcreate y pongo porejemplo un botón que me asigna el foco al edit cuando clico, logicamente no me da el error.(pero el edit y el form son los mismos)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.setfocus;
end;

Claro que alomejor es que en el formcreate aún no se ha creado el edit y claro, ¿a quien le va a enviar el foco?

.... Creo que me quedan muchas horas de delphi por delante jejeje

Última edición por niñotaliban fecha: 18-11-2005 a las 01:36:58.
Responder Con Cita
  #17  
Antiguo 18-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Pues asi como dices. Cuando intentas asignar el foco, todavia el edit no esta creado, ponlo en otro evento(OnShow o OnActive), o mejor aun pon su propieda TabOrder en 0 y evitas poner codigo

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #18  
Antiguo 18-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Troi
(...) mejor aun pon su propieda TabOrder en 0 y evitas poner codigo (...)
También podría utilizar la propiedad "ActiveControl" del formulario. Aquí un extracto de la descripción de dicha propiedad:


Cita:
Empezado por Ayuda de Delphi
If the form does not have focus, ActiveControl is the control on the form that will receive focus when the form receives focus.
Es posible que dicha propiedad "ActiveControl" esté en el "inspector de objetos" (sea published) con el fin de asignar un control en tiempo de diseño: dicho control tomará el foco según lo tome el formulario que lo contenga, o sea, según se muestre un determinado formulario.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #19  
Antiguo 18-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por vtdeleon
Pues asi como dices. Cuando intentas asignar el foco, todavia el edit no esta creado, ponlo en otro evento(OnShow o OnActive), o mejor aun pon su propieda TabOrder en 0 y evitas poner codigo
A mi ya me "reprendieron" en un hilo por hacer la misma afirmación, así que ahora me toca a mí hacer la .... la ... ¿reprensión?

En realidad cuando llega el evento OnCreate, todos los componentes de la ventana si están creados, de hecho, puedes usar Edit1.Text := 'bla bla'.

El Edit, como su Form, están ocultos, (invisibles), de ahí el mensaje.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #20  
Antiguo 18-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por Lepe
A mi ya me "reprendieron" en un hilo por hacer la misma afirmación, así que ahora me toca a mí hacer la .... la ... ¿reprensión?
Te vengaste , eeeh

Ok, es verdad lo que dices!, Gracias por la correccion
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:15:45.


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
Copyright 1996-2007 Club Delphi