Ver Mensaje Individual
  #13  
Antiguo 22-08-2011
Jack Jack is offline
Miembro
 
Registrado: may 2003
Posts: 57
Reputación: 22
Jack Va por buen camino
Perdón por el retraso

He tenido que confeccionar un código nuevo porque tenía el otro empotrado en toda la aplicación y me parecía muy difícil de poner todo.
Ahí va la unidad nueva entera:
Y gracias de antemano por la contestación. Un saludo.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Button2011, IBDataBase, IBCustomDataSet;


type
THilo = class(TThread)
private
DataBase: TIBDataBase;
Tabla: TIBDataSet;
procedure ActualizaMemo;
public
CadenaMostrar: string;
constructor Create( Suspendido: Boolean );
procedure Execute; override;
end;



type
THPrueba = class(TForm)
Button20111: TButton2011;
Memo1: TMemo;
procedure Button20111Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
HPrueba: THPrueba;

implementation

{$R *.DFM}

procedure THilo.Execute;
begin
// Aqui no tengo mu claro lo que tengo que poner
{ while Self.Terminated = False do
Self.Synchronize;}
end;


constructor THilo.Create( Suspendido: Boolean );
begin
inherited Create( True );
// Quizas tuviera que crear un objeto TList con un database, transaction y tabla
// para cada ejecución del hilo
DataBase := TIBDataBase.Create( nil );
DataBase.DataBaseName := 'C:\DATOS\BASEDATOS.FDB';
DataBase.LoginPrompt := False;
DataBase.Params.Clear;
DataBase.Params.Add( 'user_name=sysdba' );
DataBase.Params.Add( 'password=masterkey' );
DataBase.Connected := True;
//
Tabla := TIBDataSet.Create( nil );
Tabla.DataBase := DataBase;
Tabla.Transaction := TIBTransaction.Create( nil );
Tabla.Transaction.DefaultDataBase := DataBase;
Tabla.Transaction.Params.Clear;
Tabla.Transaction.Params.Add( 'read_committed' );
Tabla.Transaction.Params.Add( 'rec_version' );
Tabla.Transaction.Params.Add( 'nowait' );
Tabla.Transaction.StartTransaction;
Tabla.SelectSQL.Clear;
Tabla.SelectSQL.Add( 'select Codigo, Denominacion from Apuntes' );
Tabla.SelectSQL.Add( 'where Periodo = 2010' );
Tabla.Active := True;
while not Tabla.Eof do begin
CadenaMostrar := Tabla.Fields[ 0 ].AsString + ' ' +
Tabla.Fields[ 1 ].AsString;
Synchronize( ActualizaMemo );
Tabla.Next;
end;
end;

procedure THilo.ActualizaMemo;
begin
HPrueba.Memo1.Lines.Add( CadenaMostrar );
end;





procedure THPrueba.Button20111Click(Sender: TObject);
var Hilo: THilo;
begin
Hilo := THilo.Create( True );
Hilo.Execute;
Hilo := THilo.Create( True );
Hilo.Execute;

end;

end.
Responder Con Cita