PDA

Ver la Versión Completa : Mantener activa una clase


ospaco69
15-12-2006, 22:41:38
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:


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:

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".