Ver Mensaje Individual
  #2  
Antiguo 28-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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 Oscar.

Fijate si te puede servir el modo que uso en este ejemplo para cualquier TWinControl o descendiente:
Código Delphi [-]
type
  TForm1 = class(TForm)
    ...
    Edit1: TEdit;
    Edit2: TEdit;
    ...
    procedure FormCreate(Sender: TObject);
  private
    FPrevFocusCtrl: TWinControl;
    procedure CMFocusChanged(var Msg: TCMFocusChanged); message CM_FOCUSCHANGED;
    procedure ActiveControlChange(Sender: TObject);
  public
  end;

var
  Form1: TForm1;

implementation 

uses TypInfo;

type
  TSentido = (seAnterior, seSiguiente);

var
  SentidoTab: TSentido; // (anterior/siguiente)

// Obtener sentido (anterior/siguiente)
procedure TForm1.CMFocusChanged(var Msg: TCMFocusChanged);
begin
  if Assigned(FPrevFocusCtrl) then
  begin
    if Msg.Sender.TabOrder > FPrevFocusCtrl.TabOrder then
      SentidoTab:= seSiguiente
    else
      SentidoTab:= seAnterior;
    FPrevFocusCtrl:= Self.ActiveControl;
  end;
  inherited;
end;

// Mostrar sentido (el valor ya se encuentra en SentidoTab)
procedure TForm1.ActiveControlChange(Sender: TObject);
begin
  Caption:= Copy(GetEnumName(TypeInfo(TSentido), Ord(SentidoTab)), 3, MaxInt);
  FPrevFocusCtrl:= Screen.ActiveControl;
end;

// Iniciar
procedure TForm1.FormCreate(Sender: TObject);
begin
  FPrevFocusCtrl:= Screen.ActiveControl;
  Screen.OnActiveControlChange:= ActiveControlChange;
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 29-09-2014 a las 02:30:31.
Responder Con Cita