Tienes razon. El codigo es muy simple:
Código Delphi
[-]
procedure Tfentrada.Timer1Timer(Sender: TObject);
var
lahora:ttime;
horastr:string;
horastr1:string;
begin
lahora:=time;
horastr:=formatdatetime('hh:mm',lahora);
displayhora:='Hora '+FormatDateTime('hh:mm',Time);
statusbar1.panels.items[3].text:=displayhora;
datadespertador.tdespertador.open;
datadespertador.tdespertador.first;
while not datadespertador.tdespertador.Eof do
begin
horastr1:=formatdatetime('hh:mm',datadespertador.tdespertador.FieldByName('Hora').asdatetime);
if horastr=horastr1 then
begin
alarmahabitacion:=datadespertador.tdespertador.fieldbyname('Habitacion').asinteger;
lbl2:= Txibutton(fentrada.FindComponent('b'+inttostr(alarmahabitacion)));
lbl2.glyph:=nil;
falarma:=tfalarma.create(application);
falarma.Show;
datadespertador.tdespertador.Delete;
end;
datadespertador.tdespertador.next;
end;
end;
y el formulario falarm que se abre es este:
Código Delphi
[-]
unit alarma;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;
type
Tfalarma = class(TForm)
Image1: TImage;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
Bevel1: TBevel;
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
public
end;
var
falarma: Tfalarma;
reproduce:boolean;
implementation
uses entrada;
{$R *.dfm}
procedure Tfalarma.FormShow(Sender: TObject);
begin
fentrada.MediaPlayer1.Open;
timer1.Enabled:=true;
label2.Caption:=inttostr(fentrada.alarmahabitacion);
end;
procedure Tfalarma.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
close;
end;
procedure Tfalarma.Timer1Timer(Sender: TObject);
begin
fentrada.MediaPlayer1.Play;
end;
procedure Tfalarma.BitBtn1Click(Sender: TObject);
begin
fentrada.MediaPlayer1.stop;
end;
uso un mediaplayer con un boton para parar la alarma.
Se que esta un poco farragoso, para una sola alarma si funciona pero se pierden el resto de alarmas si pongo un showmodal, pero lo que interesa es que se abra la ventanita avisando de la alarma y siga buscando comparando en el archivo para sacar mas ventanitas, con solo show a veces queda tapado el form.
si le pongo para parar me sale el error stack overflow.
gracias por vuestra paciencia