Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2017
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: Jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Como usar SetFocus en un TForm personalizado

Tengo un TForm personalizado para entrada de datos y me gustaría que al abrirlo el Foco se colocara en el Editor. No sé cómo hacerlo. Aquí pongo el código:
Código Delphi [-]
procedure TForm1.BitBtn3Click(Sender: TObject);  // TForm de recogida de datos.
Var
  FModal: TForm;   Boton: TButton;   Lbl : TLabel;   Edito : TEDit;
begin
  FModal:= TForm.Create(Application);   FModal.Caption:= 'Recoger Nº EDIFIL';
  FModal.BorderStyle:= bsDialog;          FModal.Position:= poScreenCenter;
  Boton := TButton.Create( FModal);
  With Boton do
  begin
    Caption:= 'Salir y Guardar';
    Left:= 85;         Top:= 140;     
   Width:= 180;     Parent:= FModal;     
   Default:=True;    ModalResult:= mrClose;
  end;
  Lbl := TLabel.Create( FModal);
  with Lbl do
  begin
     Caption := 'Escribe tu Nº Edifil: ';      Left:= 90;      
    Top:= 60 ;      Parent:= FModal;
  end;
  Edito:= TEdit.Create(FModal);
  With Edito do
  begin
    Edito.Text:= '9999';     Edito.Font.Size :=18;     
    Edito.Left := 85;          Edito.Top := 80 ;     
    Parent:= FModal;
  end;
  try
    FModal.ShowModal; //Soy Modal y me tienes que cerrar.
  finally
    begin
     Edifil:= Copy(Edito.Text, 1, 5);
     FModal.Free;
    end;
       //Libera todo su contenido
  end;
end;
Responder Con Cita
  #2  
Antiguo 21-12-2017
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: Oct 2010
Ubicación: Lima - Peru
Posts: 285
Poder: 9
Caminante Va camino a la fama
Hola
Puedes probar poniendo en la propiedad taborder del control el valor 0. Asi sera el primero en tener el foco.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #3  
Antiguo 21-12-2017
bucanero bucanero is offline
Miembro
 
Registrado: Nov 2013
Ubicación: Almería, España
Posts: 111
Poder: 5
bucanero Va por buen camino
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
  #4  
Antiguo 21-12-2017
cloayza cloayza is offline
Miembro
 
Registrado: May 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 722
Poder: 16
cloayza Va camino a la fama
Los TForm tienen una propiedad que se llama ActiveControl, en ella puedes indicar el control que tendrá el foco al mostrar el form.

Código Delphi [-]

form1.ActiveControl:=Edit2;

Saludos cordiales
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tpanle como Tform felipe88 API de Windows 12 01-02-2008 15:25:52
como usar setfocus en un Avdgrid spyfenix OOP 1 14-06-2007 19:23:36
¿Como crear un reporte personalizado? AndGaG Impresión 1 04-06-2006 10:59:08
TForm como parametro Delpho Varios 3 07-02-2006 10:13:08


La franja horaria es GMT +2. Ahora son las 20:29:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi