Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enter a tabs (https://www.clubdelphi.com/foros/showthread.php?t=64992)

José Luis Garcí 13-11-2009 10:19:48

Enter a tabs
 
Hola compañeros tengo el siguiente código para convertir los Enter en tabas

Código Delphi [-]
    if (key = #13) then
    begin
    key:=#0;
    perform(wm_nextdlgctl,0,0);
    end;

Pero no es el uso exacto, me refiero si pulsamos el tab entra en el siguiente control y selecciona si es un edit (por ejemplo) el contenido de este, pero si pulsamos el enter se pone al principio del contenido , pero no lo selecciona, se puede conseguir que al pulsar el enter, se seleccione el contenido cono en el tab.


Como siempre gracias por vuestra ayuda

Neftali [Germán.Estévez] 13-11-2009 11:17:00

Pues me resulta raro Jose Luís, porque yo utilizo mi componente TKeysOnForm, que al final hace uso de un código similar a ese:

Código Delphi [-]
...
    // Activada la propiedad EnterAsTAB?
    if Self.FEnterAsTab then begin
...
      try
        // Irse al siguiente control
        ParentForm.Perform (WM_NEXTDLGCTL, Integer(goNEXTCTL), 0);
      except
        on E:EDataBaseError do begin

Y funciona perfectamente, también con el comportamiento de seleccionar el contenido que hay escroito en el Edit.:confused::confused:
Si quieres bájalo y haz la prueba; Échale un vistazo al resto de código fuente.

José Luis Garcí 13-11-2009 16:41:04

Hola Neftali, la semana que viene probare en la empresa con el componente, pero me resulta raro, lo que me comentas, mañana cuando tenga tiempo por la mañana antes de seguir con el componente, que definitivamente he decidido llamar ExtMulGrid y que de momento creo me esta quedando bien pero sigo teniendo dudas que ya expondré con la primera beta, para que lo testen.

hmoner 19-03-2010 19:05:05

Cita:

Empezado por Neftali (Mensaje 346506)
Pues me resulta raro Jose Luís, porque yo utilizo mi componente TKeysOnForm, que al final hace uso de un código similar a ese...

Hola Neftali, tendras ese componente a mano? el instalador?, ya que quise ingresar al sitio pero no existe mas

BrunoBsso 21-03-2010 05:38:28

Cita:

Empezado por gzjlbwax (Mensaje 357654)
very good i agree

:eek::eek::eek::eek:
Devuélvanle la pastilla :p:p

Casimiro Notevi 21-03-2010 13:17:29

Cita:

Empezado por BrunoBsso (Mensaje 357657)
:eek::eek::eek::eek:
Devuélvanle la pastilla :p:p

Ya le hemos dado la pastilla del sueño infinito :)

Neftali [Germán.Estévez] 21-03-2010 15:19:24

Cita:

Empezado por hmoner (Mensaje 357558)
Hola Neftali, tendras ese componente a mano? el instalador?, ya que quise ingresar al sitio pero no existe mas

En la Web actual está ese componente y el resto.

EDITO: Acabo de darme cuenta de que hay un problema con la web...

BrunoBsso 21-03-2010 19:10:33

Cita:

Empezado por Casimiro Notevi (Mensaje 357668)
Ya le hemos dado la pastilla del sueño infinito :)

Eso mismo estaba esperando.
Bien ahí! :cool:

Softweb 22-03-2010 16:50:23

Hola a todos.

Hay una forma mas eficiente de controlar el enter en una aplicacion, yo la que utilizo desde hace años es esta.

Crear esta función (AppMessage) en el formulario principal.
Código Delphi [-]
procedure TMain.AppMessage(var Msg: TMsg; var Handled: Boolean); 
var   
   actual: TWinControl; 
begin   
   if Msg.message = WM_KEYDOWN then      
     begin      
     if Screen.ActiveControl.Tag = 77 then Exit;      
     case Msg.wParam of        
       VK_ADD: ;//        
       VK_F12: ;//        
       VK_RETURN: 
          begin           
          actual := Screen.ActiveControl;           
          if actual is TEdit then Msg.wParam := VK_TAB;           
          if actual is TJvValidateEdit then Msg.wParam := VK_TAB;           
          if actual is TDBEdit then Msg.wParam := VK_TAB;           
          if actual is TjvDateEdit then             
            if not TjvDateEdit(actual).PopupVisible then Msg.wParam := VK_TAB;           
          if actual is TjvDBDateEdit then             
            if not TjvDBDateEdit(actual).PopupVisible then Msg.wParam := VK_TAB;           
          if actual is TDateTimePicker then Msg.wParam := VK_TAB;           
          if actual is TDBLookupComboBox then             
            if not TDBLookupComboBox(actual).ListVisible then Msg.wParam := VK_TAB;           
          if actual is TjvDBLookupCombo then             
            if not TjvDBLookupCombo(actual).ListVisible then Msg.wParam := VK_TAB;           
          if actual is TStringGrid then Msg.wParam := VK_TAB;           
        END;        
      end;      
     end; 
end;

y en el create del formulario poner esto
Código Delphi [-]
Application.OnMessage := AppMessage;

Con esto tendrás toda la aplicación controlados los enter, pero solo de los tipos de controles que ayas declarado y si algún control no quieres que trasforme los enter por tad y esta declarado su tipo le pones el tag a 77 y listo.

Funciona de maravilla y ademas te da un fuerte control de cualquier tecla que se pulse.

Saludos.

Neftali [Germán.Estévez] 23-03-2010 11:08:57

Hola José Luis.
Por ahora puedes encontrar los componentes en la web:

http://neftali.clubdelphi.com (la original)

Aunque no está actualizada al 100% (a ver si lo puedo hacer durante la mañana) los componentes ya se pueden bajar.


La franja horaria es GMT +2. Ahora son las 21:15:08.

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