Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2013
odiseeus odiseeus is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 31
Poder: 0
odiseeus Va por buen camino
Question focus de los componentes de un ventana

Buen día,

tengo una duda respecto al focus, como se hace para saber cual es el orden y cual es el componente que tiene el foco y cual es el que le sigue.... por ejemplo si tengo cierta cantidad de Edit's en una ventana pero dependiendo de lo digitado en el primero los siguientes o solo algunos se desabilitan... como se le dice a la ventana que vaya al siguiente componente que puede tener el foco, sin utilizar la tabulación... ademas como hago para cambiar el comportamiento de cambio de foco para que no sea con tabulacion si no con otra tecla?.. por ejemplo enter... y desabilitar la tabulacion como cambio de foco entre los componentes.... Muchas gracias.

yo sé que los componentes y su orden de tomar el foco se guian por una propiedad llamada TabOrder que es un numero, entonces la ventana activa debe mantener ese numero en algún lado... como hago para decirle a la aplicacion tome el componente con el taborder 6 por ejemplo... gracias y espero haberme explicado...
Responder Con Cita
  #2  
Antiguo 04-01-2013
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Saludos,

Cita:
Empezado por odiseeus Ver Mensaje
cual es el orden y cual es el componente que tiene el foco y cual es el que le sigue....
Por favor revise el método GetTabOrderList de la forma (si desciende de TWinControl).

Cita:
Empezado por odiseeus Ver Mensaje
ademas como hago para cambiar el comportamiento de cambio de foco para que no sea con tabulacion si no con otra tecla?.. por ejemplo enter... y desabilitar la tabulacion como cambio de foco entre los componentes
En el evento OnKeyPress, si aplica para su TEdit, puede capturar la tecla "Enter" (vk_return) pulsada y llamar al método SelectNext de la forma (si desciende de TWinControl).

Y en el evento OnKeyUp/OnKeyDown, puede capturar la tecla "Tab" (vk_tab) pulsada y hacer lo propio. Aunque, si no me equivoco, podría optar mejor por capturar el mensaje de Windows cm_dialogkey, para la forma completa.

-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 07-01-2013
odiseeus odiseeus is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 31
Poder: 0
odiseeus Va por buen camino
gracias, .... me sirvió de guía pero me encantaría saber un poco mas exacto como puedo anular el tab como cambio de foco entre los componentes.. gracias.
Responder Con Cita
  #4  
Antiguo 08-01-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
Cita:
Empezado por odiseeus Ver Mensaje
gracias, .... me sirvió de guía pero me encantaría saber un poco mas exacto como puedo anular el tab como cambio de foco entre los componentes.. gracias.
Hola.

En este ejemplo, anulo la tecla Tab como generadora del cambio de foco y le doy esta función a la tecla F2.

Unit1.h:
Código:
...
private:	
  TMessageEvent OldMessageEvent;
  void __fastcall ApplicationMessage(tagMSG &msg, bool &handled);
...
Unit1.cpp:
Código:
...
void __fastcall TForm1::ApplicationMessage(tagMSG &msg, bool &handled)
{
  if (msg.message == WM_KEYDOWN)
    switch (msg.wParam) {
      case VK_TAB  : handled = true; break;   // TAB
      case VK_F2: msg.wParam = VK_TAB; break; // F2 = TAB
    }
}


void __fastcall TForm1::FormCreate(TObject *Sender)
{
  OldMessageEvent = Application->OnMessage;
  Application->OnMessage = ApplicationMessage;
}

//...

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 Application->OnMessage = OldMessageEvent;
}
...
Podes asignar el comportamiento a otra tecla, o a ninguna como en este código:
Código:
void __fastcall TForm1::ApplicationMessage(tagMSG &msg, bool &handled)
{
  if (msg.message  == WM_KEYDOWN && msg.wParam == VK_TAB)
    handled = true;
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 08-01-2013
odiseeus odiseeus is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 31
Poder: 0
odiseeus Va por buen camino
Muchas gracias ecfisa... siempre tan explicito... ... gracias... completamente entendido, lo probaré... gracias
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
No perder el focus de una ventana hijo marareta OOP 2 19-07-2010 08:56:29
Propiedades de los componentes a traves de una ventana Cecil OOP 8 03-10-2007 02:02:49
Focus eldonfsr C++ Builder 2 19-09-2007 07:35:39
Focus Huer Varios 6 05-05-2007 19:16:20
Sobre maximizar los componentes de una ventana mdi quake2420 OOP 2 06-08-2005 05:15:10


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


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