Ver Mensaje Individual
  #2  
Antiguo 12-09-2003
Rudi Rudi is offline
Miembro
 
Registrado: jul 2003
Ubicación: Venezuela
Posts: 78
Reputación: 21
Rudi Va por buen camino
Hola.
Cita:
Mensaje original de Carlos Arevalo
Para desplazarme hacia adelante
SelectNext(TWinControl(Sender), true, true);
Y
SelectNext(TWinControl(Sender), false, true);
Para desplazarme hacia atrás.
eso es correcto, lo que tienes que hacer es tener cuidado en la llamada, es decir sender debe ser el control sobre el cual estas parado o el activecontrol para ser mas generico.

supongo que creaste una accion llamada Adelante y otra llamada atras y en el execute de cada una colocaste el selectnext correspondiente, entonces en la llamada a esta accion debes pasar el control actual como parametro sender, es decir:
Código:
procedure TForm1.AdelanteExecute(Sender: TObject);
begin
  SelectNext(twincontrol(sender),true,true);
end;

procedure TForm1.AtrasExecute(Sender: TObject);
begin
  SelectNext(twincontrol(sender),false,true);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = #13) then
  if (GetKeyState(VK_SHIFT) and $80 = 0) then
  begin
    key := #0;
    AdelanteExecute(sender);
  end else
    AtrasExecute(sender);
end;
si esto es lo que quieres hacer, me parece mas facil y generico hacerlo en el onkeypress de la Form (recuerda de activar el keypreview de la Form), seria algo asi:
Código:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (key = #13) and 
     ((ActiveControl is TEdit) or (ActiveControl is TDBEdit)) then
  begin
    Key := #0;
    SelectNext(ActiveControl, GetKeyState(VK_SHIFT) and $80 = 0, True);
  end
end;
Nota: GetKeyState(VK_SHIFT) and $80 = 0 lo que hace es verificar si tienes la tecla shift oprimida junto con el enter para que funcione como el tab y el key := #0 es para evitar que suene una campanita.

espero que te sirva.
Responder Con Cita