Hola Neftali,
Aver mira tengo esta unidad donde se ejecuta el thread:
Código Delphi
[-]unit unit2;
interface
uses SysUtils, Classes;
type
Thilo = class(tThread)
private
procedure updatEdit;
protected
procedure Execute; override;
end;
implementation
uses unit1;
procedure tHilo.execute;
begin
synchronize(updatEdit);
end;
procedure tHilo.updatEdit;
var
i: integer;
begin
form1.progressBar1.max:= 1000000;
for i:= 0 to form1.progressBar1.max -1 do
form1.progressBar1.position:= i;
end;
end.
Por otra parte, en la llamada del button1 tengo esto:
Código Delphi
[-]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses unit2;
var
FMiHilo: THilo;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
FMiHilo := THilo.Create(false);
end;
end.
Como ves el hilo lo hago en una unidad aparte de la del formulario, y siemplemente hago la llamada. El caso es que cuando se ejecuta, en un componente tEdit que he situado en el formulario para ver si podía escribir mientras trabajaba el bucle, sigo sin poder hacer nada. es decir que se ha "colgado" y no puedo hacer nada hasta que acaba. He intentado hacerlo como me indicabas, usando un procedimiento "independiente" sin controles visuales (salvo la barra de progreso). Entonces, ¿donde está mi error? ¿en que me estoy equivocando para que el edit quede bloqueado por el bucle?
Me he tomado la libertad de adjuntar el ejemplo que me he inventado digamos, para probar los hilos por si podeis echarle un vistazo y ver donde falla.
Un saludo.