Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Traer mi app a rpimer plano (https://www.clubdelphi.com/foros/showthread.php?t=3955)

cso2000 25-09-2003 19:53:56

Traer mi app a rpimer plano
 
Saludos a todos.


lo que quiero es poder hacer que mi aplicacion pase al primer plano de la pantalla si es que otro programa se encuentra en este


me explico: mi aplicacion es de reportes que se actualizan pero en ocaciones se ejecutan otros programas ( Ejemp. Word ) pero mi aplicacion sigue ejecutandose lo que pasa es que quiero que el usuario siempre pueda ver los cambios en los reportes


espero que alguien me pueda ayudar


de antemano Gracias.

jafl1965 25-09-2003 20:00:06

Pon la propiedad de tu forma principal
FormStyle= StayOnTop

espero sea eso,
saludos

cso2000 25-09-2003 20:14:23

Gracias por Responder:


Cambiare un poco la pregunta lo qur quiero hacer es cambiar de aplicacion como cuando utilizamos las teclas Alt + Tab

pero solo con ciertas aplicaciones


Gracias de nuevo.

roman 25-09-2003 20:30:10

Supongo que preguntas por Application.BringToFront

Ahora, dado que lo que indica jafl1965 no es lo que quieres supongo que la intención es que el usuario pueda trabajar en otra aplicaciones mientras se generan los reportes y activar tu aplicación cuando están listos.

En mi opinión no es muy buena idea en especial para usuarios como yo que no podemos escribir sin dejar de ver el teclado. Hay momentos en que estamos escribe y escribe y no nos hemos dado cuenta de lo inútil de nuestro esfuerzo ya que otra ventana se activó sin darnos cuenta.

Yo optaría por un aviso menos intrusivo, por ejemplo FlashWindow que te permite parpadear y resaltar en azul el botón de tu aplicación en la barra de tareas.

// Saludos

cso2000 25-09-2003 20:40:16

Hola Roman tu es cribiste

---------
supongo que la intención es que el usuario pueda trabajar en otra aplicaciones mientras se generan los reportes y activar tu aplicación cuando están listos.
---------

y es exactamente lo que quiero, quise utilizar la funcion

Application.BringToFront

y no me funciono como es que tengo que utilizarla



Saludos

roman 25-09-2003 20:55:33

Cita:

Posteado originalmente por cso2000
quise utilizar la funcion Application.BringToFront y no me funciono como es que tengo que utilizarla

Ya veo, el efecto es el del botón que "flashea" pero la aplicación no se activa. Para activar prueba usar esta función que saqué de otro proyecto:

Código:

function Activar;
var
  FgThreadId  : DWORD; { Hilo de la app. que tenga el foco }
  AppThreadId : DWORD; { Hilo de nuestra aplicación        }

begin
  { Si está minimizada basta restaurarla }
  if IsIconic(Application.Handle) then
    ShowWindow(Application.Handle, SW_RESTORE)
  else
  begin
    { Obtener los hilos }
    FgThreadId  := GetWindowThreadProcessId(GetForegroundWindow, nil);
    AppThreadId := GetWindowThreadProcessId(Handle, nil);

    { Anexar el hilo de nuestra app. al de la  que tenga el foco }
    AttachThreadInput(AppThreadId, FgThreadId, true);

    { Ahora sí, activar la applicación }
    SetForegroundWindow(Handle);

    { Separar el hilo de nuestra app de la otra }
    AttachThreadInput(AppThreadId, FgThreadId, false);
end;

Lo había olvidado. Application.BringToFront no siempre es suficiente para activar la aplicación. Esta función la saqué cuando estuve investigando como evitar que una aplicación se ejecute dos veces

Espero que esto te sirve.

// Saludos

cso2000 25-09-2003 21:16:50

Muchas Gracias Roman este codigo Funciona Muy Byen


Saludos


La franja horaria es GMT +2. Ahora son las 06:35:24.

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