Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ventana Modal pierde el foco (https://www.clubdelphi.com/foros/showthread.php?t=92837)

ZiriusB 18-02-2018 18:16:07

Ventana Modal pierde el foco
 
Buenos dias, un gusto saludarles, tengo un formulario al que llamo Principal donde tengo un menu para entrar a los demas formularios.
Uno de esos formularios es PROVEEDORES. al llamar al formulario PROVEEDORES este en su Evento OnActivate tiene algunos parametros (colocar una imagen por defecto, colocar texto en un edit por defecto), lo llamo desde el formulario principal con Showmodal, el problema es que cuando abro el opendialog para cargar la imagen y doy clic en Aceptar (para mostrar imagen en el formulario) el formulario PROVEEDORES no queda seleccionado, es decir, pierde el "focus", cuando doy clic para seleccionarlo me resetea los valores de la imagen y el edit (es decir se activa el OnActivate), lo raro de esto es que yo tengo otro sistema desde donde copie esos parametros y en ese otro sistema funciona perfecto, el formulario no pierde el focus para nada.

Si alguien podria orientarme por favor, agradeceria, quizas es algo sencillo pero no logro dar. (el codigo es algo sencillo, por lo que no creo que sea eso)

Código Delphi [-]
procedure TForm8.BotoncargarClick(Sender: TObject);
begin
if OpenDialog2.Execute then
begin
  mpath:=ExtractFileName(OpenDialog2.FileName);
  OpenDialog2.InitialDir:=CurrentDirectory;
  Image5.Picture.LoadFromFile(OpenDialog2.FileName);
end;
end;

Código Delphi [-]
procedure TForm8.FormActivate(Sender: TObject);
begin
edtid.text:=idempresa( 2,1 );
edtrfc.SetFocus;
Image5.Picture.LoadfromFile(CurrentDirectory+'\image\empresas\sinfoto.jpg');
end;

Jcg-Guirola 18-02-2018 18:59:37

Mira a mi me pasaba parecido abría otros form dentro de un panel en un form principal y no me permitía hacer focus en los edit al no ser con tab y por tanto no podía escribir en ellos, yo lo resolví poniendo esto en el evento click de los edit

Cita:

procedure Tform1.edit1Click(Sender: TObject);
begin
edit1.SetFocus;
end;
es un poco una chapusa porque no me deja por ejemplo seleccionar una parte del texto que escribí en el edit, pero para lo que lo quería me funcionó perfecto.

ZiriusB 18-02-2018 19:04:39

Cita:

Empezado por Jcg-Guirola (Mensaje 524617)
Mira a mi me pasaba parecido abría otros form dentro de un panel en un form principal y no me permitía hacer focus en los edit al no ser con tab y por tanto no podía escribir en ellos, yo lo resolví poniendo esto en el evento click de los edit


es un poco una chapusa porque no me deja por ejemplo seleccionar una parte del texto que escribí en el edit, pero para lo que lo quería me funcionó perfecto.

El problema es al abrir el opendialog, es decir al abrirlo la ventana pierde el foco, cuando selecciono la imagen y doy clic en aceptar ya el form PROVEEDORES ha perdido el foco.

Intente eso que dices, en el evento Onclic del boton que abre el opendialog coloque EDIT2.SETFOCUS para probar, pero como dije arriba, el foco lo pierde al abrir el opendialog, entonces de igual forma al aceptar la imagen (se cierra el opendialog) activa el evento OnActivate del form PROVEEDORES y seguidamente va al EDIT2.SETFOCUS. no se si me explico.

Neftali [Germán.Estévez] 19-02-2018 08:22:07

Hola.
De primeras (aunque no es lo que preguntas) te diría que no utilices el evento OnActivate para realizar estas cosas, ya que es un evento que se lanza más veces de las que necesitas (para lo que estás haciendo) y además tal vez antes de lo que necesitas también.
Por otro lado, para preguntas como la que planteas es posible que lo más sencillo sea hacer un pèqueño proyecto con un par de formularios y publicarlo como adjunto, para que se pueda reproducir el comportamiento que comentas y sea más fácil buscar una solució alternativa.

nopi 19-02-2018 15:35:24

No te serviría más cambiarlo al evento OnCreate para que solo se ejecute una sola vez?


La franja horaria es GMT +2. Ahora son las 09:01:53.

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