Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mantener activa una clase (https://www.clubdelphi.com/foros/showthread.php?t=38494)

ospaco69 15-12-2006 22:41:38

Mantener activa una clase
 
Buenas gente: Necesito mantener activa una clase (como si fuera un formulario con su propiedad showmodal) que no devuelva el control hasta que termine de hacer su tarea., y realmente no le estoy dando pie con bola.
A cualquiera que pueda dar opinion,consejos o cualquier otra observacion seran bienvenidas!!:confused:

dec 15-12-2006 22:45:17

Hola,

No das muchos datos. A no ser que una clase implemente "Hilos" lo general es que haga lo que pretendes. Es decir, cuando se ejecuta un método de una determinada clase, si este no está "implementado" un Hilo distinto del principal, lo cierto es que "no devolverá el control" hasta que acabe la ejecución del método en cuestión.

Un ejemplo:

Código Delphi [-]
UnaClase.MetodoQueHaceAlgo();
UnaNuevaInstruccion();

En el ejemplo "UnaNuevaInstruccion" no se ejecutará hasta que termine la ejecución de "UnaClase.MetodoQueHaceAlgo". A no ser que "UnaClase.MetodoQueHaceAlgo" se ejecute, como ya he dicho, en un Hilo distinto del principal. Si es que estoy equivocado, por favor, que alguien me corrija. :)

seoane 15-12-2006 22:52:05

Vamos por partes, ShowModal es una función no una propiedad. Y cualquier función que declares dentro de una clase se comportara de la misma manera.

Es decir si yo declaro esto:
Código Delphi [-]
type
  TMiClase = class
  public
    procedure MiMetodo;
  end;

procedure TMiClase.MiMetodo;
var
  i: integer;
begin
  for i:= 0 to 15 do
  begin
    Windows.Beep(500,100);
    Sleep(100);
  end;
end;


// Y utilizo este codigo
var
  MiClase: TMiClase;
begin
  MiClase:= TMiClase.Create;
  try
    ShowMessage('Inicio');
    MiClase.MiMetodo;
    ShowMessage('Final');
  finally
    MiClase.Free;
  end;
end;

Veras que el mensaje fin no aparece hasta que termina la "MiMetodo".


La franja horaria es GMT +2. Ahora son las 09:48:26.

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