Ver Mensaje Individual
  #1  
Antiguo 23-12-2013
n03l n03l is offline
Miembro
 
Registrado: feb 2007
Posts: 73
Reputación: 18
n03l Va por buen camino
Ayuda con crear un mismo Form varias veces + Thread

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
    { Private declarations }
  public
    { Public declarations }
  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
    { Private declarations }
  public
    { Public declarations }
  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
    { Private declarations }
  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.

Última edición por n03l fecha: 23-12-2013 a las 20:46:13.
Responder Con Cita