No necesitas el procedimiento almacenado. Con el disparador sobra:
Código SQL
[-]
CREATE TRIGGER CI_CITAS_EVENT_NUEVA FOR CI_CITAS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
post_event 'ACT_CITAS'
end
En el mdoRegisterEvent, necesitas añadir el evento que quieres esperar, dado que, en la base de datos puedes lanzar muchos eventos, pero una ventana de tu programa solo quiere enterarse de uno de ellos:
Código Delphi
[-]
const CitaModificada = 'ACT_CITAS';
procedure TfCitas.FormCreate(Sender: TObject);
begin
with mdoevents1 do
begin
Add(CitaModificada);
If Not MDOEvents1.Registered Then
MDOEvents1.Registered := true;
end;
Como sabrás, el evento lanzado por el SGBBDD lo recogerá todas las aplicaciones delphi que esten accediendo a esa Base de datos, pero solo le llegará el mensaje a la ventana que tenga registrado dicho mensaje.
Como has visto, he definido una constante CitaModificada, es muy fácil equivocarse al escribir el string, y con una sola letra que varíe, delphi no recibirá dicho evento, y empezarás a creer que Firebird no funciona bien o le echas la culpa a MDO. Usando constantes, te aseguras de no cometer errores mecanográficos. Por el bien de tu salud mental, te lo recomiendo encarecidamente
.
El evento mdoEventAlert1.OnEvent lo tienes bien definido, por ello no comento nada más.
Saludos