Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Estado de aplicación en windows 10 (https://www.clubdelphi.com/foros/showthread.php?t=95763)

novato_erick 19-07-2022 20:11:29

Estado de aplicación en windows 10
 
Hola Chicos:

durante muchos año no había prestado atención a un comportamiento de las aplicaciones que realizo en Delphi la cual haciendo una visita a unos de mis clientes después de 8 años e instalarlo en windows 10 sin ningún problema sucede que noté que muchos usuarios dejan el formulario de Acceso abierto y cuando aprietan en el la esquina derecha para limpiar el escritorio el formulario de acceso no aparece con la raya cuando una aplicación está en ejecución.

Código Delphi [-]
{$R *.res}

begin
  Application.Initialize;
  // Iniciamos Splash
  Application.MainFormOnTaskbar := True;
  frmBanner := TfrmBanner.Create(Nil);
  try
    frmBanner.ShowModal;
  finally
    frmBanner.Free;
  end;
  frmSeguridadAcceso := TfrmSeguridadAcceso.Create(Nil);
  try
    frmSeguridadAcceso.modoSeguridad := 1;
    frmSeguridadAcceso.ShowModal;
  finally
    frmSeguridadAcceso.Free;
  end;

  if VariablesArqueos.permiteacceso = False then
  begin
    dmConectaPvsisArc.SQLConnectionPVsis.Connected := False;
    Application.Terminate;
  end;
  // Cargamos la aplicación
  Application.CreateForm(TfrmReportes_Compras, frmReportes_Compras);
  Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas);
  Application.Run;
end.

De esta manera es que la aplicación no muestra ningún estado haciendo que los usuarios precionen nuevamente el icono de ejecutar.

Sin embargo al hacer esto:
Código Delphi [-]
{$R *.res}

begin
  Application.Initialize;
  // Iniciamos Splash
  Application.MainFormOnTaskbar := True;
  frmBanner := TfrmBanner.Create(Nil);
  try
    frmBanner.ShowModal;
  finally
    frmBanner.Free;
  end;
  Application.CreateForm(TfrmSeguridadAcceso, frmSeguridadAcceso);//aquí cambio a application.CreateForm si muestra el estado que está activo el formulario pero....
 // frmSeguridadAcceso := TfrmSeguridadAcceso.Create(Application);
  try
    frmSeguridadAcceso.modoSeguridad := 1;
    frmSeguridadAcceso.ShowModal;
  finally
    frmSeguridadAcceso.Free;
  end;

  if VariablesArqueos.permiteacceso = False then
  begin
    dmConectaPvsisArc.SQLConnectionPVsis.Connected := False;
    Application.Terminate;
  end;
  // Cargamos la aplicacion
  Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas);// a la finales el formulario principal del programa jamás se muestra pero si se crea.
  Application.Run;
end.

agradezco cualquier colaboración ya que he tratado de corregir ese comportamiento y :confused:

Saludos a Todos:

novato_erick

Neftali [Germán.Estévez] 20-07-2022 08:43:20

No acabo de entender el problema, al final.
¿Quieres decir que con esta línea no se muestra el form?

Código Delphi [-]
Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas);

Debería mostrarse sin problemas
¿Qué tienes en las propiedades del proyecto? ¿En MainForm y Auto-create forms?

novato_erick 20-07-2022 15:49:44

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 547538)
No acabo de entender el problema, al final.
¿Quieres decir que con esta línea no se muestra el form?

Código Delphi [-]
Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas);

Debería mostrarse sin problemas
¿Qué tienes en las propiedades del proyecto? ¿En MainForm y Auto-create forms?


Buen día: Así es no se muestra el formulario que en teoría es principal.

Dentro de las proiedades del proyecto en MainForm a la finales tengo que colocar el frmPrincipalArcas pero aún así no logro que en el formulario
frmSeguridadAcceso muestre el estado ya que muchos usuario ejecutan y dejan el formulario Abierto sin accesar y no me muestra en windows 10 la sombra de activo en la parte del icono en la barra de estado.

Código Delphi [-]

  Application.CreateForm(TfrmSeguridadAcceso, frmSeguridadAcceso); //--- Aquí muestra el estado del formulario
  try
    frmSeguridadAcceso.modoSeguridad := 1;
    frmSeguridadAcceso.ShowModal;
  finally
    frmSeguridadAcceso.Free;
  end;

  if VariablesArqueos.permiteacceso = False then
  begin
    dmConectaPvsisArc.SQLConnectionPVsis.Connected := False;
    Application.Terminate;
  end
  else
  Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas); //--Pero no se muestra al final el principal 
  Application.Run;

  {usando:}
  frmSeguridadAcceso := TfrmSeguridadAcceso.Create(Nil);  //aquí para nada muestra el estado en la barra de herramienta 
  try
    frmSeguridadAcceso.modoSeguridad := 1;
    frmSeguridadAcceso.ShowModal;
  finally
    frmSeguridadAcceso.Free;
  end;

  if VariablesArqueos.permiteacceso = False then
  begin
    dmConectaPvsisArc.SQLConnectionPVsis.Connected := False;
    Application.Terminate;
  end
  else
  Application.CreateForm(TfrmPrincipalArcas, frmPrincipalArcas); //Aquí si muestra el formulario principal
  Application.Run;

Saludos y Gracias por responder;

chenech 20-07-2022 20:17:19

Poner la pantalla a 100% en escala
 
Prueba a poner la pantalla al 100%, a mi me pasaba y era en los clientes que la tenian configurada la escala a mas del 100%. Cambie a 100 y arreglado.
De todas formas con este código obligas al form a mostrarse si está minimizada y aunque no aparezca, alguien que lo traduzca a Delphi.
Código:

        if(Form141->WindowState == wsMinimized)
                Form141->WindowState = wsNormal;
        else
                Form141->Show();


novato_erick 21-07-2022 00:27:00

Cita:

Empezado por chenech (Mensaje 547542)
Prueba a poner la pantalla al 100%, a mi me pasaba y era en los clientes que la tenian configurada la escala a mas del 100%. Cambie a 100 y arreglado.
De todas formas con este código obligas al form a mostrarse si está minimizada y aunque no aparezca, alguien que lo traduzca a Delphi.
Código:

        if(Form141->WindowState == wsMinimized)
                Form141->WindowState = wsNormal;
        else
                Form141->Show();


en Delphi es sencillo:
Código Delphi [-]

  if(Form141.WindowState = wsMinimized) then
    Form141.WindowState := wsNormal
  else
    Form141.Show;

Pero la verdad mi formulario principal está maximizado desde el principio, la verdad no se que se hace el formulario principal porque tiene notificaciones de windows y empieza a mandar dichas notificaciones y veo que en el panel de tarea está corriendo.
Pensé que tenia que ver algo con la propiedad Left pero nada está en 0.

Gracias por tu comentario chenech. aún estoy en prueba de este comportamiento extraño.

Saludos;


La franja horaria es GMT +2. Ahora son las 09:38:59.

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