Ver Mensaje Individual
  #16  
Antiguo 15-02-2011
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Reputación: 20
Choclito Va por buen camino
Lightbulb Ahi va el codigo

Tienes razon amigo, este es el codigo en firebird en el triger donde llamo al evento ALTA si cumple la condicion
Código SQL [-]


CREATE OR ALTER trigger evento_reg_internacion for registro_internacion
active after update position 0
AS
begin
   if ((new.diagnostico_egreso<>'TRASLADO A OTRA CAMA Y SALA')and(new.tipo_alta is not null)) then
  post_event 'ALTA';
end
Tengo un componente evento (tmdoevent) y un popup(msnpopup) en el formulario menu_caja y en el evento onshow tengo este codigo:
Código Delphi [-]
procedure TF_Menu_Caja.FormShow(Sender: TObject);
begin
xpmenu1.Active:=true;
 jvstatusbar1.Panels[1].Text:='Usuario: '+f_usuarios.loginn;
 fd.UnLoad;
 fd.AddFormClass(tf_pres_caja,true);
evento.Events.Add('ALTA');
evento.RegisterEvents;
end;
tambien probe en el evento oncreate pero tampoco pasaba nada, el siguiente codigo:
Código Delphi [-]
evento.Events.Add('ALTA');
evento.RegisterEvents;

luego en el evento onevent del componente evento tengo el siguiente codigo:
Código Delphi [-]
procedure TF_Menu_Caja.EventoEventAlert(Sender: TObject;
  EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
begin
If EventName = 'ALTA' then
  BEGIN
//popup.Text:='Paciente dado de alta'; // MostrarCitas;  // = refresh
popup.ShowPopUp;
//showmessage('paciene dado de alta');
//MsgBox ('Sistema S&S','Paciente dado de alta',MB_OK + MB_ICONEXCLAMATION);
{Application.MessageBox(
  pchar(  'Paciente dado de alta'),
  pchar(' Sistema S&S '),
  MB_OK+MB_ICONWARNING+MB_SYSTEMMODAL); }
  END;
end;

ademas tengo una unidad donde personalizo mis mensajes en mi aplicacion el codigo es el siguiente:
Código Delphi [-]
unit UnitShowMessage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, LMDControl, LMDBaseControl, LMDBaseGraphicButton,
  LMDCustomSpeedButton, LMDSpeedButton,Buttons, ExtCtrls,
  LMDCustomButton, LMDButton, ImgList, JvGradient;

type
  TFrmMessageBox = class(TForm)
    LTitulo: TLabel;
    LMensaje: TLabel;
    BAceptar: TLMDButton;
    BCancelar: TLMDButton;
    PBMovible: TPaintBox;
    BReintentar: TLMDButton;
    PBIcono: TPaintBox;
    ILIcono: TImageList;
    JvGradient1: TJvGradient;
    procedure FormShow(Sender: TObject);
    procedure PBMovibleMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PBMovibleMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure PBMovibleMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PBIconoPaint(Sender: TObject);


  private
    { Private declarations }
    RatonPulsado: Boolean;
    Punto: TPoint;

  public
    { Public declarations }
  end;
  function Maximo (a,b:integer):integer;
      FUNCTION MsgBox (Titulo, Mensaje: String; Flags: DWord):integer;
var
  FrmMessageBox: TFrmMessageBox;
  IndiceImagen:integer;
implementation
    
{$R *.dfm}


procedure TFrmMessageBox.FormShow(Sender: TObject);
begin
RatonPulsado := False;
end;

procedure TFrmMessageBox.PBMovibleMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 IF Button = mbLeft THEN
  BEGIN
    RatonPulsado := True;
    Punto.x := x;
    Punto.y := y;
  END;
end;
function Maximo(a,b:integer):integer;
begin
if a>b then
Maximo:=a
else
Maximo:=b;

end;

FUNCTION MsgBox (Titulo, Mensaje: String; Flags: DWord): Integer;
CONST
  PosLeft = 112;
  PosWidth = 320;
  LeftBotones = 25;
  SepBotones = 7;
VAR
  Botones, Icono: Word;
  AlineacionDerecha: Boolean;
  ResModal: TModalResult;
  IdBotonPulsado: Integer;

BEGIN
  { Comenzamos separando de la variable Flags los botones, el icono
    así como si el texto del mensaje está alineado o no a la derecha }

  Botones := Flags AND $F;
  Icono := Flags AND $F0;
  AlineacionDerecha := (Flags AND $F0000) = $80000;
 IndiceImagen := 0;  { Un valor inicial no perjudicial }

  WITH FrmMessageBox DO
  BEGIN
    Caption := Titulo;
    LTitulo.AutoSize := False;
    LMensaje.AutoSize := False;
    LTitulo.Caption := Titulo;
    LTitulo.Left := LeftBotones;
    LTitulo.Width := 2 *(PosWidth DIV 3);
    LTitulo.AutoSize := True;
    LMensaje.Caption := Mensaje;
    LMensaje.Left := PosLeft-15;
    LMensaje.Width := PosWidth;
    LMensaje.Alignment := taLeftJustify;
    LMensaje.AutoSize := True;
    LMensaje.Top := LTitulo.Top + LTitulo.Height + 15;
    BAceptar.Top := LMensaje.Top + Maximo(LMensaje.Height, PBIcono.Height);
    BCancelar.Top := BAceptar.Top;
    BReintentar.Top := BAceptar.Top;
    ClientHeight := BAceptar.Top + BAceptar.Height + 20;

    { Ahora pasamos a arreglar los botones en función del que nos han pedido }

    CASE Botones OF
      MB_OK:  { Sólo debe estar visible el de 'Aceptar' y centrado }
      BEGIN
        BAceptar.Visible := True;
        BCancelar.Visible := False;
       BReintentar.Visible := False;

       // BAceptar.Kind := bkOK;
        BAceptar.Caption := 'Aceptar';

        BAceptar.Left := Width DIV 2 - BAceptar.Width DIV 3;
        BAceptar.Width:=90;
      END;

      MB_OKCANCEL:  { Visibles 'Aceptar' y 'Cancelar', centrados }
      BEGIN
        BAceptar.Visible := True;
        BCancelar.Visible := True;
       BReintentar.Visible := False;

      //  BAceptar.Kind := bkOK;
        BAceptar.Caption := ' Aceptar';
       // BCancelar.Kind := bkCancel;
        BCancelar.Caption := ' Cancelar';

        BAceptar.Left := Width DIV 3 - BAceptar.Width DIV 3;
        BCancelar.Left := BAceptar.Left + BAceptar.Width + SepBotones;
      END;

      MB_RETRYCANCEL:  { Visibles 'Reintentar' y 'Cancelar', centrados }
      BEGIN
        BAceptar.Visible := False;
        BCancelar.Visible := True;
       BReintentar.Visible := True;

        //BCancelar.Kind := bkCancel;
        BCancelar.Caption := ' Cancelar';
       // BReintentar.Kind := bkRetry;
        BReintentar.Caption := ' Reintentar';

        BReintentar.Left := Width DIV 3 - BReintentar.Width DIV 3;
        BCancelar.Left := BReintentar.Left + BReintentar.Width + SepBotones;
      END;

      MB_YESNO:  { De nuevo visibles 'Aceptar' y 'Cancelar', centrados }
      BEGIN
        BAceptar.Visible := True;
        BCancelar.Visible := True;
       BReintentar.Visible := False;

       // BAceptar.Kind := bkYes;
        BAceptar.Caption := 'Si';
       // BCancelar.Kind := bkNo;
        BCancelar.Caption := 'No';

        BAceptar.Left := 112;
        BAceptar.Width:=49;
        BCancelar.Left := 232;
      END;

      MB_YESNOCANCEL:  { Todos los botones deben ser visibles }
      BEGIN
        BAceptar.Visible := True;
        BCancelar.Visible := True;
       BReintentar.Visible := True;

       // BAceptar.Kind := bkYes;
        BAceptar.Caption := ' Sí';
      //  BCancelar.Kind := bkNo;
        BCancelar.Caption := ' No';
      //  BReintentar.Kind := bkCancel;
       BReintentar.Caption := ' Cancelar';

        BAceptar.Left := LeftBotones;
        BCancelar.Left := BAceptar.Left + BAceptar.Width + SepBotones;
        BReintentar.Left := BCancelar.Left + BCancelar.Width + SepBotones;
      END;

    END;

    { Ahora vamos a averiguar qué icono nos han pedido para dibujarlo }

   CASE Icono OF
      MB_ICONINFORMATION: { MB_ICONASTERISK }
        IndiceImagen := 1;

      MB_ICONERROR:       { MB_ICONHAND, MB_ICONSTOP}
        IndiceImagen := 2;

      MB_ICONEXCLAMATION: { MB_ICONWARNING }
        IndiceImagen := 3;

      MB_ICONQUESTION:
        IndiceImagen := 4;
    END;

    IF AlineacionDerecha THEN LMensaje.Alignment := taRightJustify;
  END;

  //MessageBeep(Icono);
  { Esto es un extra ;-) Llama a una función del
                         API que emite un sonido estándar de Windows,
                         con lo que lo hacemos más parecido al MessageBox
                         de verdad :-) }

  ResModal := FrmMessageBox.ShowModal;
  IdBotonPulsado := 0;

  { Por último, convertimos los valores de ModalResult a las constantes
    definidas por Windows como respuesta de MessageBox }

  CASE ResModal OF
    mrOk:     IdBotonPulsado := IDOK;
    mrCancel: IdBotonPulsado := IDCANCEL;
    mrAbort:  IdBotonPulsado := IDABORT;
    mrRetry:  IdBotonPulsado := IDRETRY;
    mrIgnore: IdBotonPulsado := IDIGNORE;
    mrYes:    IdBotonPulsado := IDYES;
    mrNo :    IdBotonPulsado := IDNO;
  END;

  MsgBox := IdBotonPulsado;
END;
procedure TFrmMessageBox.PBMovibleMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
 IF RatonPulsado THEN
    SetBounds(x - Punto.x + Left, y - Punto.y + Top, Width, Height);
end;

procedure TFrmMessageBox.PBMovibleMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 IF Button = mbLeft THEN RatonPulsado := False;
end;

procedure TFrmMessageBox.PBIconoPaint(Sender: TObject);
begin
  ILIcono.Draw(PBIcono.Canvas, 0, 0, IndiceImagen);

end;

end.
que como veran solo llamo a la funcion MsgBox de esta unidad para mostrar mi mensaje personalizado.
El formulario asociado a esta unidad lo creo cuando se ejecuta la aplicacion,
Ahora me puse un boton en el formulario menu_caja para llamar al popup y me da bien.
El evento se genera en otro modulo(menu_enfermeria) que esta en otro ambiente que una vez que guarden los datos del paciente, quisiera que me muestre los datos de este paciente en el menu_caja con el popup pero no me muestra,probe con un showmessage y da bien , probe con la unidad q tengo para mis mensajes personalizados y da, pero como en el menu_caja tengo un boton para salir del sistema el cual llama a la funcion msgbox me da el error que anteriormente te comente.
Particularmente nose como hacer para que me muestre en el popup,creo q seria mas visual para el usuario,agradesco comentarios amigo o amigos
Responder Con Cita