Ver Mensaje Individual
  #5  
Antiguo 03-11-2010
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 cmfab, rrf.

Si no te entiendo mál, lo que deseas es el comportamiento que te expuso rrf sólo cuando avanzas al próximo Edit.
Pero que no aparezca el mensaje de error cuando retrocedas al Edit ya ingresado sin errores.

Si es así, una forma puede ser:
Código Delphi [-]
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure EditExit(Sender: TObject);
    procedure EditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    FProx: Boolean;
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

(* Inicializar bandera de sentido (proximo / anterior) *)
procedure TForm1.FormCreate(Sender: TObject);
begin
  FProx:= True;
end;

(* Asignar al evento OnExit de los tres Edits *)
procedure TForm1.EditExit(Sender: TObject);
begin
  with Sender as TEdit do
  begin
    if (Text = '') and FProx then // si (Evaluar) y Proximo
    begin
      ShowMessage('Error en ingreso');
      SetFocus;    
    end;
  end;
end;

(* Asignar al evento OnKeyDown de los tres edits *)
procedure TForm1.EditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Msg: TMsg;
begin
  if Key = VK_RETURN then //Enter: siguiente Edit
  begin
    FProx:= True;
    Perform(WM_NEXTDLGCTL,0,0);  // Edit siguiente
    PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE); //Sacar Beep
  end;
  if (Shift = [ssCtrl])and (Lo(Key) = 8) then //Ctrl+BackSpace: Edit anterior
  begin
    FProx:= False;
    Perform(WM_NEXTDLGCTL,1,0);  // Edit anterior
    PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
  end;
end;

Saludos.

Última edición por ecfisa fecha: 03-11-2010 a las 03:27:23.
Responder Con Cita