Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
traer form adelante

ante todo buenas tardes, tengo un pequeño problema, necessito traer mi form adelante de cualquier otra aplicacion (no juegos), mi aplicacion esta minimizada, y al presionar, por ej la tecla "*" traiga el form1 a delante de la aplicacion que se esta ejecutando, todo lo que intente hasta ahora solo hace titilar en la barra de tareas la aplicacion, lo que estoy haciendo es en delphi 7 y sistema OP XP.
desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 13-07-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Si te estoy entendiendo bien, lo que necesitas es tan solo poner la propiedad FormStyle=fsStayOnTop de tu formulario, ésto hará que tu formulario simpre esté por sobre cualquier aplicacion, parecido a la ventana del "Administrador de tareas de Windows"
Ahora si tan solo quieres solamente que tu formulario tenga el "focus" y se venga hacia adelante pues tan solo puedes Hacer ésto:
Código Delphi [-]
Form1.BringToFront;

Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 13-07-2010 a las 22:15:21.
Responder Con Cita
  #3  
Antiguo 13-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
no me resulta en delphi 7 y SO XP, solo titila en la barra de tareas, lo que necesito es tape cualquier otro prog. en ejecucion (ojo no juegos), pero te agradezco lo rapido de la respuesta
hugo
Responder Con Cita
  #4  
Antiguo 13-07-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

No me había dado cuenta que si tu formulario está minimizado, pues no creo que te funcione ya que al minimizar el formulario ,éste pierde el foco. y creo que por ahí va la cosa..
Supongo que en ese caso deberías usar un Hook(gancho) para detectar la combinacion de teclas que pulsas..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #5  
Antiguo 13-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
desde ya mas que agradecido por tus prontas respuestas (no se hasta que hora me quedare hoy con esto, lo tengo que tener para mañana), pero te comento, tengo ttimer en la aplicacion, en el evento

if GetAsyncKeyState( Ord( '8' ) ) = -32767 then
begin
form1.formStyle := fsStayOnTop
end;

(en este caso la tecla 8)

Pero no logro en ningun caso que la aplicacion pase a primer plano y tenga el foco, (ni siquiera logro que pase a primer plano), lo mas que logro es que la aplicacion en la barra de tareas titile.-
hugo
Responder Con Cita
  #6  
Antiguo 14-07-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Prueba así:

Código Delphi [-]
if (GetAsyncKeyState( Ord( '8' ) ) and $8000)<>0 then
  Form1.FormStyle := fsStayOnTop;

Saludos.
Responder Con Cita
  #7  
Antiguo 14-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
if (GetAsyncKeyState( Ord( '8' ) ) and $8000)<>0 then
Form1.FormStyle := fsStayOnTop;

lamentablemente no funciono, pero desde ya muchas gracias por sus
prontas respuestas
Responder Con Cita
  #8  
Antiguo 14-07-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No se como lo estás usando, pero si funciona.

Ten en cuenta de que para que se detecte la pulsación de la tecla, se debe ejecutar al API GetAsyncKeyState. Ésta detecta la última cecla pulsada desde la última ejecución. Una forma fácil de implementarlo es en un Timer con un intervalo de 100ms, por ejemplo.
Código Delphi [-]procedure TForm1.Timer1Timer(Sender: TObject); begin if (GetAsyncKeyState( Ord( '8' ) ) and $8000)<>0 then Form1.FormStyle := fsStayOnTop; end;


Saludos.
Responder Con Cita
  #9  
Antiguo 14-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
escafandra, mil disculpas, si funciona, con el ejemplo que me pasaste funciona correctamente, cuando lo probe antes de tu respuesta lo hice mal (tapado de trabajo), al correjirme funciona perfecto, desde ya muchas gracias, abusando de tu amabilidad y sapiensa, como detecto la tecla + del teclado numerico, ya que es el unico teclado que tendra el sistemaa implementar, desde ya gracias a todos y disculpen mi error
hugo
Responder Con Cita
  #10  
Antiguo 14-07-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (GetAsyncKeyState(VK_ADD) and $8000)<>0 then
    Form1.FormStyle := fsStayOnTop;
end;

Saludos.
Responder Con Cita
  #11  
Antiguo 15-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
muchas gracias
hugo
Responder Con Cita
  #12  
Antiguo 15-07-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.198
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si te interesa, tienes otra forma de realizar lo mismo pero no usando la API GetAsyncKeyState ni, por tanto, un Timer. Se trata de registrar un HotKey y asociarle un evento:

Código Delphi [-]
unit Unit1;
 
interface
 
uses Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
 
type
 TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
  procedure HotKey(var Message: TMessage); message WM_HOTKEY;
 end;
 
var Form1: TForm1;
 
implementation
 
{$r *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, 1, 0, VK_ADD);
end;
 
procedure TForm1.HotKey(var Message: TMessage);
begin
 if Message.WParam = 1 then
  begin
   Form1.FormStyle := fsStayOnTop;
  end;
end;
 
end.

Tu dirás cual método te conviene mejor.


Saludos.
Responder Con Cita
  #13  
Antiguo 16-07-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
ummm...

Es buena práctica quitar el registro de esa tecla con UnregisterHotkey en el formClose de la ventana
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 16-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
desde ya muchas gracias, y la verdad mas que atentos todos
hugo
Responder Con Cita
  #15  
Antiguo 26-07-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Y otra vez yo Lepe....
Estoy buscando algo parecido. El tema es que el minimize en Win7 no siempre funciona y se pierde la aplicación, se ve el icono en la barra de tareas, pero inaccesible y desaparece de la lista del administrador de tareas, se ve en la solapa servicios, pero ho hay forma de restaurar. Con lo cual hay que finalizar la aplicación y reiniciarla.
Saludos y gracias de antemano!
Walter
Responder Con Cita
Respuesta



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
traer al frente un form no modal (de entre varios), utilizando el valor en el caption jcapitan OOP 2 23-05-2007 02:33:43
Un nuevo paso adelante en la tecnología de fabricación de transistores Sasuke_Cub Noticias 12 13-02-2007 18:17:31
Adelante y Atrás en IE o cualquier Navegador Capo Internet 3 21-07-2006 15:16:04
Manuales de delphi 6 en adelante y software. zugazua2001 Varios 0 27-05-2005 15:39:52
Adelante y Atrás en WebBrowser Niko Internet 1 20-11-2004 02:40:48


La franja horaria es GMT +2. Ahora son las 06:59:52.


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
Copyright 1996-2007 Club Delphi