Hola
raquel:
Te propongo un método adaptando una rutina de
Zarko Gajic en la que podrás ver a modo de ejemplo, como es posible el cambio de colores entre diferentes TEdit, que supongo que en tu caso serán TDBedit.
Adaptando este procedimiento podrías realizar el control que pretendes, sin embargo, he de comentarte, que a mi juicio esto coarta el modo de comportamiento de un programa, dado que si el objetivo es que el usuario vaya a un control específico, sin pasar por otro, o tras haber pasado por otro... ¿Que ocurre si desea volver al anterior ? En fin es tu programa el que ha de discernir cual es el control correcto en un momento determinado, aunque tal como comenta
Lepe, creo que lo mejor es usar unas reglas de validación en cada control, y dejar el usuario que determine en que parte de la ventana quiere estar....
El código:
Código Delphi
[-]
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ScreenActiveControlChange(Sender: TObject) ;
procedure FormShow(Sender: TObject);
private
public
end;
var
Form1: TForm1;
lastFocused : TWinControl;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := ScreenActiveControlChange;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.SetFocus;
Application.ProcessMessages;
TEdit(Screen.ActiveControl).Color := clBlue;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Screen.OnActiveControlChange := Nil;
end;
procedure TForm1.ScreenActiveControlChange(Sender: TObject) ;
var
previousActiveControl : TWinControl;
Begin
if (Screen.ActiveControl = nil) and (Screen.ActiveControl is TEdit) then
begin
lastFocused := nil;
Exit;
end;
if lastFocused <> NIL then
Begin
previousActiveControl := lastFocused;
TEdit(Screen.ActiveControl).Color := clBlue;
TEdit(previousActiveControl).Color := clWindow;
End;
lastFocused := Screen.ActiveControl;
End;
Espero que te resulte útil.