Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias, con el show solo no me cierra despues de abrirse. Sobre los threads tengo que estudiarlos detenidamente porque nose por donde empezar.
Me refiero a que si estoy actualizando una tabla con lineas de codigo, al ejecutar el timer y abrir el form, lo que estaba siendo ejecutado en otras lineas de codigo de delphi para seguir metiendo los datos en la tabla, los datos que faltan no acaban de pasar, y en otros casos me sale un aviso que nose puede actualizar en un dataset cerrado, si anulo el timer .enabled false, todo va como la seda.

gracias de nuevo
Responder Con Cita
  #2  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por anubis Ver Mensaje
gracias, con el show solo no me cierra despues de abrirse.
Quzás estas haciendo uso de BitBtns... añade la siguiente llamada en el OnClick de aquellos botónes (o en el OnExecute de las acciones) que deban cerrar el formulario:

Código Delphi [-]
  Close;

Cita:
Empezado por anubis Ver Mensaje
Sobre los threads tengo que estudiarlos detenidamente porque nose por donde empezar.
No dudo que una aplicación multi-hilo sería mejor para lo que haces, pero tampoco creo que sea la solución a tus problemas actuales.

Cita:
Empezado por anubis Ver Mensaje
Me refiero a que si estoy actualizando una tabla con lineas de codigo, al ejecutar el timer y abrir el form, lo que estaba siendo ejecutado en otras lineas de codigo de delphi para seguir metiendo los datos en la tabla, los datos que faltan no acaban de pasar, y en otros casos me sale un aviso que nose puede actualizar en un dataset cerrado, si anulo el timer .enabled false, todo va como la seda.
Seguramente en algún punto estas llamando directa o indirectamente a Application.ProcessMessages. Quita esas llamadas... quizás nunca debiste ponerlas allí.

Como regla general, no introduzco una sola línea de código en mis programas si no he leído lo suficiente sobre lo que hace y sus efectos colaterales. (en el help/en los foros/en internet en general)

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 10-02-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
Gracias por las respuestas.
Comento lo que pasa, cuando la alarma es la misma que la del sistema, lo que hago es crear en tiempo de ejecucion un form, si le pongo como me dices solo show, me abre, si se abre otro, si le doy a parar la alarma (tiene un control mediaplayer y un timer.enabled:=false, me sale error de stackflow.

Alguna sugerencia como puedo hacer esto?

gracias
Responder Con Cita
  #4  
Antiguo 10-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por anubis Ver Mensaje
Gracias por las respuestas.
Comento lo que pasa, cuando la alarma es la misma que la del sistema, lo que hago es crear en tiempo de ejecucion un form, si le pongo como me dices solo show, me abre, si se abre otro, si le doy a parar la alarma (tiene un control mediaplayer y un timer.enabled:=false, me sale error de stackflow.

Alguna sugerencia como puedo hacer esto?

gracias
La sugerencia que te doy es que nos brindes información más concreta.
Por empezar: Mensaje específico del error. Y segundo... no terminamos de comprender como lo estás implementando. ¿Podrías mostrarnos parte del código?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 10-02-2008
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
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;
       // falarma.Destroy;
         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
    { Private declarations }

  public
    { Public declarations }
  end;

var
  falarma: Tfalarma;
   reproduce:boolean;
implementation

uses entrada;
{$R *.dfm}

procedure Tfalarma.FormShow(Sender: TObject);
begin
fentrada.MediaPlayer1.Open;
//fentrada.Timer1.Enabled:=false;
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Medir tiempo de ejecución usando Timer (Problemas) Bauhaus1975 Varios 12 24-11-2012 03:16:59
Timer comba OOP 3 18-06-2007 17:54:00
Timer nenufer Varios 7 10-05-2006 17:35:17
timer +1 slim jim Varios 4 02-10-2005 05:03:11
Timer Malon OOP 5 25-11-2003 18:19:03


La franja horaria es GMT +2. Ahora son las 08:59:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi