Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ventana Popup (https://www.clubdelphi.com/foros/showthread.php?t=79804)

rarratia 11-08-2012 18:46:28

Ventana Popup
 
Estiamados, necesito saber si existe alguna función como ShowMessage que no tenga el botón ok y que desaparezca al mover el mouse o tocar una tecla. ¿Existe alguna función Delphi que lo haga?

Casimiro Notevi 11-08-2012 20:14:22

No creo, pero puedes hacerlo tú mismo.
Un simple form.

rarratia 12-08-2012 00:53:22

Claro, puedo generar un procedimiento así:

Código Delphi [-]
procedure ShowPopup(const Msg: string);
var
  ventana : TForm;
begin
  ventana := CreateMessageDialog(Msg, mtCustom, []);
  with ventana do begin
    OnKeyPress = tecla_pulsada;
    OnMouseMove = se_mueve_mouse;
    Try
      ShowModal;
    Finally
      Free;
    End;
  end;
end;

¿Pero el tema es cómo genero ahora un procedimiento afuera que pueda asignárselo al evento onkeypress y onmousemove, porque cuando creo los procedmientos que cierran la ventana al mover el mouse o pulsar una tecla me genera error

rarratia 12-08-2012 00:55:36

estos serían los procedimientos:
Código Delphi [-]
procedure tecla_pulsada(Sender: TObject; var Key: Char);
begin
  (Sender As TForm).Close;
end;

procedure se_mueve_mouse(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  (Sender As TForm).Close;
end;

rarratia 12-08-2012 02:00:58

Solucionado el problema y tenemos un procedure que al pasar el mouse o tocar una tecla se cierra sola:

Primero bastaba poner en la unidad de ayuda los procedimientos a ser asignados como eventos:

Código Delphi [-]
Type

  TMensaje = class
    procedure tecla_pulsada(Sender: TObject; var Key: Char);
    procedure se_mueve_mouse(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  end;

Luego el procedure queda así:

Código Delphi [-]
procedure ShowPopup(const Msg: string; const TituloVentana : string);
var
  ventana : TForm;
  ProcMensaje : TMensaje;
begin
  ventana := CreateMessageDialog(Msg, mtCustom, []);
  ventana.Caption := TituloVentana;
  ProcMensaje := TMensaje.Create;
  with ventana do begin
    OnKeyPress := ProcMensaje.tecla_pulsada;
    OnMouseMove := ProcMensaje.se_mueve_mouse;
    Try
      ShowModal;
    Finally
      Free;
    End;
  end;
end;

Problema solucionada, gracias a todos por su colaboración, en verdad era todo muy simple!!!!

Casimiro Notevi 12-08-2012 10:54:46

Puedes hacerlo como dices, creándolo en tiempo de ejecución, aunque también puedes tener tu form creado antes, en diseño, y capturando sus eventos de pulsación de teclas y movimiento de ratón.

rarratia 12-08-2012 16:46:11

Tienes Razón, pero la idea era crear una función como ShowMessage, (si no existía en delphi y por eso pregunté) que estuviera en una unidad de utilidades y que puedas usarla solamente anexando dicha unidad. Saludos y muchas gracias!!!


La franja horaria es GMT +2. Ahora son las 04:53:13.

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