¿Cómo implementar subprocesos múltiples en DELPHI? pregunta extraña
interfaz
usa
winprocs,clases,gráficos,extctrls;
tipo
tbouncethread =clase(tthread)
privado
fshape:tshape;
fxspeed:integer;
fyspeed:
procedimiento moveshape;
procedimiento protegido
ejecutar;anular;
público
constructor create(suspended:boolean;shape:tshape; xspeed,yspeed:integer);
propertyshape:tshapereadfshape;
end;
implementación
procedimiento tbouad.maxwidth: integer;
comenzar
con fshape hacer
comenzar
izquierda:=izquierda+fxspeed;
arriba:=arriba +fyspeed;
si(izquierda=0) o(izquierda+ancho=parent.width)entonces
fxspeed:=fxspeed*-1;
si (arriba=0) o (arriba=altura+parent.altura)entonces
fyspeed:=fyspeed*-1
end;
end;
procedimiento tbouncethread.execute;
comenzar
mientras no esté terminado,
comenzar
sincronizar(); /p>
tbouncethread.movhape);
end;
end;
constructor tbouncethread.create(suspended:boolean;shape:tshape;
xspeed,yspeed.integer);
comenzar
creación heredada (suspendida);
fshape:=shape;
fxspeed:=xspeed;=xspeed;{velocidad del eje x}
fyspeed:=yspeed;{velocidad del eje y}
freeonterminate:=true;
end;
end.
Después de hacer esto, podemos crear un nuevo programa y agregar la unidad bncthrd anterior en la sección de usos y luego agregar dos formas en su forma1 Controles forma1 y forma2, forma1 puede ser un rectángulo y forma2
es un círculo. Agregue el siguiente código para hacer que el rectángulo y el círculo se muevan.
unidad Unidad1;
interfaz
usa
bncthrd,Windows, Mensajes, SysUtils, Clases, Gráficos, Controles, Formularios, Diálogos ;
Tipo
Tipo
Este es el código que hace que el rectángulo y el círculo se muevan. p>tipo
TForm1 = clase(TForm)
Forma1: TShape;
Forma2: TShape;
Botón1: TButton;
procedimiento Botón1Clic( Remitente: TObject);
privado
{ Declaraciones privadas }
público
{ Público declaraciones }
end;
var
Form1: TForm1;
Implementación
{$R *. DFM}
procedimiento TForm1.Button1Click(Sender: TObject);
comenzar
tbouncethread.create(false,shape1,1,2);
tbouncethread.create(false,shape2,2,3);
end;
end.