PDA

Ver la Versión Completa : Traer mi app a rpimer plano


cso2000
25-09-2003, 19:53:56
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
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:


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 (http://www.clubdelphi.com/~roman/uiapp.php)

Espero que esto te sirve.

// Saludos

cso2000
25-09-2003, 21:16:50
Muchas Gracias Roman este codigo Funciona Muy Byen


Saludos