Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2007
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Lightbulb Evitar focus

Holas amigos:
Como podría evitar el focus a un Edit.

Supongamos que tenemos lo sgte:

Edit1 (propiedad TabOrder = 0)
Edit2 (propiedad TabOrder = 2)
Edit3 (propiedad TabOrder = 1)

Tengo el Edit2 de solo lectura. (propiedad ReadOnly = True)

¿Cómo podría evitar el focus al Edit2?

Salu2
Ledian
Responder Con Cita
  #2  
Antiguo 17-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Coloca la propiedad TabStop del Edit2 en False
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 17-08-2007
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Thumbs up ok

OK miles de grasias.

Salu2
Ledian
Responder Con Cita
  #4  
Antiguo 17-08-2007
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
En efecto, con TabStop := False, el TEDIT no recibiría "foco" a medida que nos desplazamos con el teclado; sin embargo, si "picamos" en TEDIT con el ratón SÍ recibe el foco, a pesar de tener como FALSE su propiedad TabStop. ¿Cómo evitar esto?
En el evento OnEnter de TEDIT deberemos escribir el siguiente código

SelectNext((Sender as TWinControl), True, True);

Con ello TEDIT no recibirá "foco" en caso de que "piquemos" con el ratón ya que el foco se desplazará al siguiente control que pueda recibirlo
Responder Con Cita
  #5  
Antiguo 17-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por MON___ Ver Mensaje
Con ello TEDIT no recibirá "foco" en caso de que "piquemos" con el ratón ya que el foco se desplazará al siguiente control que pueda recibirlo
Bueno, es que tener un control como ReadOnly := True, quiere decir que queremos que el usuario pueda entrar en dicho Control para hacer por ejemplo un CTRL+C aunque no deba modificar la información del mismo, pero ademas de eso Ledian_Fdez quiere que cuando hagan Tab no pase por allí, si no que mas bien salte al siguiente control...

De todas formas para hacer lo que tu sugieres, bastaria con simplemente decirle al Edit que su propiedad Enabled es False.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 29-03-2013
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Hola!.

Primero que nada mil disculpas por revivir este hilo antiguo.

Segundo, agradecer que gracias a este hilo logré mejorar un pequeño problemita en una aplicación (especialmente lo de "SelectNext.....").

Tercero, aprovechar a consultar algo similar y que creo que no merecía abrir un post nuevo.

Tengo un formulario con un PageControl dentro del cual tengo tres pestañas.
En una de ellas tengo un DBGrid y un GroupBox (dentro del cual tengo un Edit y dos RadioButton).
Me interesa que el TAB solo pase por el Edit y el DBGrid.
El problema es que por más que seteo las propiedades de TabStop de los RadioButton en False, el TAB sigue pasando por ellos (únicamente por el que tenga su propiedad Checked en True).

¿Alguna solución?.

Saludos y gracias de antemano!
Responder Con Cita
  #7  
Antiguo 29-03-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Dexter182.

Es que cuando un TRadioButton se selecciona, pone su propiedad TabStop en True.

Una solución puede ser:
Código Delphi [-]
...
type
  TGroupBox = class(StdCtrls.TGroupBox)
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
  end;
  FormX = class(TForm)
    ...

implementation

procedure TGroupBox.CMMouseEnter(var Msg: TMessage);
var
  i: Integer;
begin
  for i:= 0 to ControlCount-1 do
    if Controls[i] is TRadioButton then
      TRadioButton(Controls[i]).TabStop:= False;
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 29-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
A lo mejor en este caso sí convenía abrir un nuevo hilo por tener relativamente poca relación con lo tratado anteriormente. Pero, no pasa nada.

Cita:
Empezado por Dexter182 Ver Mensaje
El problema es que por más que seteo las propiedades de TabStop de los RadioButton en False, el TAB sigue pasando por ellos (únicamente por el que tenga su propiedad Checked en True).
Lo que describes se debe al diseño del componente TRadioButton. Cuando un botón de radio es marcado, es decir, cuando su propiedad Checked cambia a True, automáticamente su propiedad TabStop se pone en True también. El código de la VCL que evidencia esta acción se encuentra, al menos en Delphi 7, en el método TRadioButton.SetChecked:
Código Delphi [-]
procedure TRadioButton.SetChecked(Value: Boolean);
...
begin
  if FChecked <> Value then
  begin
    FChecked := Value;
    TabStop := Value;  // <-- He aquí la causa
    ...
  end;
end;

Una solución sencilla es emplear el evento OnClick de los TRadioButton para hacer algo como esto:
Código Delphi [-]
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  RadioButton1.TabStop := False;
end;
Como son dos botones de radio los que necesitan lo mismo, en lugar de crear un manejador de evento OnClick para cada uno, te conviene definir un sólo código para ambos (el nombre "RadioButtonClick" lo escribes dentro del inspector de objetos después de seleccionar ambos botones de radio). Así, con un sólo manejador de eventos controlas el problema para ambos objetos:
Código Delphi [-]
procedure TForm1.RadioButtonClick(Sender: TObject);
begin
  (Sender As TRadioButton).TabStop := False;
end;

Espero te sea de utilidad, avísanos si necesitas algo más.

Un saludo.

Al González.

P.D. Ahora veo que el compañero ecfisa también te ha dado una respuesta.
Responder Con Cita
  #9  
Antiguo 30-03-2013
Avatar de Dexter182
Dexter182 Dexter182 is offline
Miembro
 
Registrado: jul 2005
Ubicación: Argentina
Posts: 95
Poder: 19
Dexter182 Va por buen camino
Thumbs up

¡¡¡Muchísimas gracias a ambos!!!

No solo solucioné el problema, si no que sus consejos me sirvieron para quitar algunas líneas de código redundante.

Pido perdón por el tema de reabrir el hilo (pensé que era una buena idea).

Muchísimas gracias de nuevo!!!

Saludos!!!
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Focus Huer Varios 6 05-05-2007 18:16:20
mover el focus ercrizeporta Varios 3 01-10-2006 00:38:42
Focus en RadioGroup zugazua2001 Varios 1 03-07-2006 22:19:44
Evitar Focus !3d1@n OOP 7 13-04-2005 13:12:18
Focus Cronos Varios 3 17-05-2003 03:18:29


La franja horaria es GMT +2. Ahora son las 22:30:15.


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