Ir al contenido


Foto

Hacer que Enter funcione como TAB a nivel de aplicación


  • Por favor identifícate para responder
8 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 02 junio 2009 - 03:50

Hola a todos
No recuerdo donde encontre este codigo que hace que Enter funcione como TAB a nivel de aplicación, solo hay que ponerlo una vez en el formulario principal y ya funciona para todos los demas formularios.

Lo comparto con uds pues me resulto muy optimo



delphi
  1. {-------------------- Para hacer que Enter funcione como TAB-------------------}
  2. procedure TfrmPrincipal.AppMessage(var Msg: TMsg; var Handled: Boolean);
  3. var
  4. actual: TWinControl;
  5. begin
  6. if Msg.message = WM_KEYDOWN then
  7.   if Msg.wParam = VK_RETURN then
  8.     begin
  9.       actual:=Screen.ActiveControl;
  10.       if (actual is TDBEdit) or (actual is TEdit) or
  11.         (actual is TDBComboBox) or (actual is TComboBox) then
  12.       Msg.wParam:=VK_TAB;
  13.     end;
  14. end;


Pero hay un detalle que me gustaria optimizar
En el ejemplo hay que preguntar por cada Control en el que se quiere que funcione con un if
Si tengo que usar muchos controles la instruccuin if se me harí­a muy larga

Alguien sabe alguna forma mas optima de arreglar ese detalle?  *-)
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 02 junio 2009 - 05:22

Hola
Y no se puede con un Case of?
Saludos
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 02 junio 2009 - 06:48

yo lo hago al contrario, yo pregunto si el control es el que no quiero que utilize esa funcion
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 02 junio 2009 - 06:53

Hola,
Creo que pueden reducirse esos IF por algo como esto:



delphi
  1. if Actual is TWinControl
  2.   then .....



No tengo Delphi a mano, pero creo que es válido.

Saludos,
  • 0

#5 Ayla

Ayla

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 98 mensajes

Escrito 03 junio 2009 - 03:58


Hola,

Gracias por la función, desconocí­a que se podí­a hacer a nivel de aplicación.

yo lo hago al contrario, yo pregunto si el control es el que no quiero que utilize esa funcion


Yo también lo hago al contrario  :D


Un saludo.
  • 0

#6 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 03 junio 2009 - 11:30

Si a esos componentes que quieres que adopten esa funcionalidad les das un valor exclusivo en su propiedad Tag, puedes preguntar por ella:



delphi
  1. {-------------------- Para hacer que Enter funcione como TAB-------------------}
  2. procedure TfrmPrincipal.AppMessage(var Msg: TMsg; var Handled: Boolean);
  3. var
  4. actual: TWinControl;
  5. begin
  6. if Msg.message = WM_KEYDOWN then
  7.   if Msg.wParam = VK_RETURN then
  8.     begin
  9.       actual:=Screen.ActiveControl;
  10.       if actual.Tag = MI_VALOR_EXCLUSIVO  then
  11.         Msg.wParam:=VK_TAB;
  12.     end;
  13. end;



Saludos.
  • 0

#7 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 03 junio 2009 - 03:29

yo lo hago al contrario, yo pregunto si el control es el que no quiero que utilize esa funcion

Pienso que eso es lo mejor, pues los unicos que no quiero son los Botones, que siempre son mucho menos que los que quiero  *-)
  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 junio 2009 - 06:26

¿Y no te funciona el de Escafandra?, porque más óptimo que eso no lo veo, muy bueno escafandra (y).

Saludos.
  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 05 junio 2009 - 07:12

Pues si, la sugerencia de escafandra esta bastante optima  :)
Aunque tambien excluyendo los controles es valido, ya que los que excluiria serian solo los botones, que seria un solo control (o dos para si alguien usa mas de un tipo de boton)
  • 0




IP.Board spam blocked by CleanTalk.