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 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Hola.

Yo uso este código en el FormKeyDown y no tengo ningún problema:

Código Delphi [-]
procedure Formulario.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

  case Key of

    VK_UP: begin
      SelectNext(ActiveControl, False, True); 
      Key := 0;
    end;

    VK_DOWN: begin
      SelectNext(ActiveControl, True, True);
      Key := 0;
    end;

  end;

Saludos

De funcionar si funciona, pero me parece curioso que en el primer toque de tecla (Arriba o Abajo) el foco se pierde cuando se deshabilita un edit

chequea esto y miralo, te daras cuenta que presionas la tecla hacia abajo, los edits 2,3,4 se deshabilitan y el foco se pierde

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    edt4: TEdit;
    edt5: TEdit;
    edt6: TEdit;
    procedure edt1Exit(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.edt1Exit(Sender: TObject);
begin
  edt2.Enabled := edt1.Text = '2';
  edt3.Enabled := edt1.Text = '2';
  edt4.Enabled := edt1.Text = '3';
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case Key of

    VK_UP: begin
      SelectNext(ActiveControl, False, True);
      Key := 0;
    end;

    VK_DOWN: begin
      SelectNext(ActiveControl, True, True);
      Key := 0;
    end;
end;
end;

end.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
https://www.clubdelphi.com/foros/sho...highlight=foco

desde este fecha estoy batallando con esto y no encuentro la solucion
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Agregue un Label y un timer para que cada segundo me diga en que control estoy
cuando presiono la tecla 2 y enter
el foco cambia

pero cuando en el edit1 coloco el numero 1 y enter aparece un mensaje de error

medio loco si?

alguien puede corroborar que sucede?
no quiero tener un mal concepto de delphi.

Código Delphi [-]
procedure TForm1.tmr1Timer(Sender: TObject);
begin
  lbl1.caption := ActiveControl.Name;
end;
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 19-05-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por oscarac Ver Mensaje
De funcionar si funciona, pero me parece curioso que en el primer toque de tecla (Arriba o Abajo) el foco se pierde cuando se deshabilita un edit

chequea esto y miralo, te daras cuenta que presionas la tecla hacia abajo, los edits 2,3,4 se deshabilitan y el foco se pierde
Dependiendo del valor que tenga en ese momento edt1 ¿no?
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Dependiendo del valor que tenga en ese momento edt1 ¿no?
exacto !!!
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 19-05-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Entonces es correcto el funcionamiento, ¿no?
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Entonces es correcto el funcionamiento, ¿no?
Si funciona pero el foco se pierde
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 19-05-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Si hago esto me funciona a la perfeccion, si alguien pudiera optimizarlo o colocarlo en una libreria para invocarlo o ver una mejor forma estare muy atento

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    edt4: TEdit;
    edt5: TEdit;
    edt6: TEdit;
    procedure edt1Exit(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.edt1Exit(Sender: TObject);
begin
  edt2.Enabled := edt1.Text = '2';
  edt3.Enabled := edt1.Text = '2';
  edt4.Enabled := edt1.Text = '3';
  if edt2.Enabled then edt2.SetFocus
  else
    if edt3.Enabled then edt3.SetFocus
      else
        if edt4.Enabled then edt4.SetFocus
          else
            if edt5.Enabled then edt5.SetFocus
              else
                if edt6.Enabled then edt6.SetFocus;

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case Key of

  VK_RETURN: begin
      SelectNext(ActiveControl, True, True);
      Key := 0;
    end;
        VK_UP: begin
      SelectNext(ActiveControl, False, True);
      Key := 0;
    end;

    VK_DOWN: begin
      SelectNext(ActiveControl, True, True);
      Key := 0;
    end;
end;
end;

end.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 22-05-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
No había caído en que los eventos de teclado pueden afectar a la respuesta por defecto de Intro y Tab. Siempre se aprende algo nuevo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
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
Resta entre Campos shoulder MySQL 3 16-01-2013 20:00:38
como obtener un unico valor entre dos campos de folio de sql server uper MS SQL Server 7 23-05-2011 22:05:45
Salto del Cursor entre Paneles Er0s Varios 5 01-10-2010 18:30:42
Conexion entre campos de distintas tablas eudy.net Conexión con bases de datos 3 09-12-2007 07:36:56
Resta entre campos datetime ale_metall Varios 3 22-10-2007 20:15:19


La franja horaria es GMT +2. Ahora son las 06:45:54.


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