Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ocultar Form cuando raton sale de el (https://www.clubdelphi.com/foros/showthread.php?t=69748)

jandro 06-09-2010 11:18:50

Ocultar Form cuando raton sale de el
 
Hola a todos!!

Necesito que cuando el raton salga de mi form, éste se oculte pasado un tiempo.

Lo del tiempo se como hacerlo, pero como puedo controlar que mi raton ha salido de mi form???

Espero que alguien me pueda ayudar.

Gracias de antemano.
Saludos.
Jandro.

Neftali [Germán.Estévez] 06-09-2010 14:41:41

Prueba capturando mensajes tipo el CMEdit o CMDeactivate.

TWinControl, de la cual deriva TForm posee el CMExit:

Código Delphi [-]
procedure CMExit(var Message: TCMExit); message CM_EXIT;

Caro 06-09-2010 16:01:59

Hola jandro, también puedes hacerlo de esta forma:

Código Delphi [-]
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  If GetCapture = 0 then
    SetCapture(Self.Handle) ;
  if Not PtInRect(Self.BoundsRect, Mouse.CursorPos) then //Si esta fuera del form
    Self.Hide;
end;

Saluditos

jandro 06-09-2010 17:11:52

Gracias por las respuestas!

Lo de Neftali, lo siento, pero me suena a chino! :) no he llegado a ese nivel aun :D

Y lo de Caro lo he probado en una aplicacion nueva y si que funciona, pero en mi aplicacion, no. No se por que....

Te cuento un poco mas por si te puede dar una pista. Mi programa es como una pestaña en el lado derecho de la ventana, que solo se ve un icono y cuando haces click pues se desplaza el form completo hacia la izquierda y aparece el programa completo. No se si sera porque al empezar el programa todo el form esta practicamente fuera de la pantalla...

Gracias de nuevo a los dos.

Saludetes.

Neftali [Germán.Estévez] 06-09-2010 17:54:52

Cita:

Empezado por jandro (Mensaje 375643)
Lo de Neftali, lo siento, pero me suena a chino! :) no he llegado a ese nivel aun :D

Y lo de Caro lo he probado en una aplicacion nueva y si que funciona, pero en mi aplicacion, no. No se por que....

Ok, tal vez la explicación fue demasiado rápida. :o
Si buscas en los foros porCMExit, hay varios ejemplos de cómo aplicarlo a un componente, pero de la misma forma se puede aplicar a un form (creo). Sin ir más lejos es este hilo, hay un código de David, donde aparece cómo definirlo y su implementación en un Edit. Es hacer lo mismo, pero en tu form. Si buscas hay alguno más.

ecfisa 06-09-2010 20:12:57

Hola jandro.

Al igual que Neftali, veo la solución con el uso de mensajes.
Pero yo aprovecharía los mensajes: CM_MOUSEENTER y CM_MOUSELEAVE.

Código Delphi [-]
...
type
  TForm = class(Forms.TForm)
  public
    procedure MouseEnter(var Msg: TMessage); message CM_MouseEnter;
    procedure MouseLeave(var Msg: TMessage); message CM_MouseLeave;
  end;
  TForm1 = class(TForm)
  private
  public
  end;

var
  Form1: TForm1;

implementation{$R *.dfm}

procedure TForm.MouseEnter(var Msg: TMessage);
begin
  Form1.WindowState:= wsNormal;
end;

procedure TForm.MouseLeave(var Msg: TMessage);
begin
  Form1.WindowState:= wsMinimized;
end;
...

Saludos.

Neftali [Germán.Estévez] 07-09-2010 11:06:58

Cita:

Empezado por ecfisa (Mensaje 375669)
Pero yo aprovecharía los mensajes: CM_MOUSEENTER y CM_MOUSELEAVE.

Estos también tienen muy buena pinta... :D


La franja horaria es GMT +2. Ahora son las 00:44: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