Ver Mensaje Individual
  #3  
Antiguo 21-12-2017
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Sin duda alguna, la forma mas fácil para solucionar este problema, es crear el campo TEdit el primero de todos, inmediatamente después de crear el formulario

Código Delphi [-]
  ...
  FModal:= TForm.Create(Application);   
  FModal.Caption:= 'Recoger Nº EDIFIL';
  FModal.BorderStyle:= bsDialog;          
  FModal.Position:= poScreenCenter;
  Edito:= TEdit.Create(FModal);
  With Edito do
  begin
    Edito.Text:= '9999';     Edito.Font.Size :=18;     
    Edito.Left := 85;          Edito.Top := 80 ;     
    Parent:= FModal;
  end;
  Boton := TButton.Create( FModal);
  ...
  // resto de componentes

Otra forma un poco mas rebuscada es asignar al evento OnShow al formulario para que asigne el foco al componente deseado una vez se muestre la ventana, esto complica un poco el tema, por que el evento tiene que ser un procedimiento dentro de una clase, no vale con un simple procedimiento suelto y tiene que tener accesible la variable donde se guarda el componente que va a coger el foco. Si dicho procedimiento se introduce a la clase TForm1 que es la que llama a esta ventana tendría que quedar algo así:

Código Delphi [-]
var
  // Importante la variable al objeto tiene que estar fuera para que sea accesible por el evento OnShow
  Edito: TEDit;

procedure TForm1.OnShow(Sender: TObject);
begin
  if Edito.CanFocus then
    Edito.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FModal: TForm;
  Boton: TButton;
  Lbl: TLabel;
begin
  FModal := TForm.Create(Application);
  ...
  try
    FModal.OnShow := OnShow;
    FModal.ShowModal; //Soy Modal y me tienes que cerrar.
  finally
    Edifil := Copy(Edito.Text, 1, 5);
    FModal.Free;
    //Libera todo su contenido
  end;
end;
Responder Con Cita