Saludos, necesito una ayudita con un problemita que no e podido resolver.
Tengo Un Form mdi principal y un Form hijo en el cual creo un thread para realizar una serie de procesos incluyendo manejo de bases de datos. de esta forma me funciona bien.
el problema que tengo esque quiero crear el Form hijo varias veces pero el problema esque desde e theread hago referencias apuntando al Form1, por ejemplo Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
lo cual no me funciona para el segundo Form
espero me ayuden!!! saludos
Aca el Form mdi Principal
Código Delphi
[-]
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TFrmMain = class(TForm)
Panel1: TPanel;
BtnFrm1: TButton;
BtnFrm2: TButton;
procedure BtnFrm2Click(Sender: TObject);
procedure BtnFrm1Click(Sender: TObject);
private
public
end;
var
FrmMain: TFrmMain;
implementation
uses Unit1;
{$R *.dfm}
procedure TFrmMain.BtnFrm1Click(Sender: TObject);
begin
Form1:= TForm1.Create(Application);
Form1.Label1.Caption:='Soy el Uno';
Form1.Caption:= 'Soy el Uno';
Form1.show;
end;
procedure TFrmMain.BtnFrm2Click(Sender: TObject);
var
F2: TForm1;
begin
F2:= TForm1.Create(Application);
F2.Label1.Caption:='Soy el Dos';
F2.Caption:= 'Soy el Dos';
F2.show;
end;
end.
Aca el Form1 que quiero crear varias veces
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn2: TBitBtn;
ProgressBar1: TProgressBar;
Label1: TLabel;
procedure BitBtn2Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
Uses Hilos;
var
Hilo:THilo;
{$R *.dfm}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Hilo:=THilo.Create(True);
Hilo.FreeOnTerminate:=true;
Hilo.Resume;
end;
end.
y aca la unidad del Hilo
Código Delphi
[-]
unit Hilos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons;
type
THilo = class(TThread)
private
protected
procedure Execute; override;
end;
implementation
uses Unit1;
procedure THilo.Execute;
begin
Form1.ProgressBar1.Position:=0;
Form1.BitBtn2.Enabled:=false;
repeat
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
Sleep(500);
until Form1.ProgressBar1.Position=Form1.ProgressBar1.Max;
Form1.BitBtn2.Enabled:=true;
end;
end.
Claro esta no es mi aplicacion real, es solo un esquema para lograr mi objetivo
Saludos y espero sugerencias.