PDA

Ver la Versión Completa : TForm como parametro


Delpho
07-02-2006, 00:08:44
Holaa chavales/as!!
Aqui estoy intentando pasar un formulario (TForm) como parametro para un procedimiento.
procedimiento:

procedure Vaciar(Grid:TStringGrid;progreso:TProgressBar;texto:TEdit;form:TForm);
begin
for i := 0 to form.Grid.RowCount - 1 do begin
form.Grid.Rows[i].Clear;
end;
form.progreso.Position:=0;
form.progreso.Refresh;
form.texto.Text:='';
end;

llamada:

procedure TForm1.Sala72Click(Sender: TObject);
begin
for i := 0 to Form8.StringGrid1.RowCount - 1 do begin
Form8.StringGrid1.Rows[i].Clear;
end;
Form8.ProgressBar1.Position:=0;
Form8.ProgressBar1.Refresh;
Form8.Edit1.Text:='';
end;

procedure TForm1.Sala82Click(Sender: TObject);
begin
//for i := 0 to Form9.StringGrid1.RowCount - 1 do begin
// Form9.StringGrid1.Rows[i].Clear;
//end;
//Form9.ProgressBar1.Position:=0;
//Form9.ProgressBar1.Refresh;
//Form9.Edit1.Text:='';
Vaciar(StringGrid1,ProgressBar1,Edit1,F9);
end;

El caso es que tengo varios formularios, y cuando en el formulario principal clickeo en vaciar sala 1, vaciar sala2, etc se tienen que ejecutar esas acciones, pero para no repetir mucho codigo pues quiero hacer un procedimiento.
Aver si alguien me puede echar una mano para llamarla, y en caso de que no se pueda, como se podria hacer
Muchas Gracias!!

fliper
07-02-2006, 02:57:00
tu lo q estas aciendo es un cine para iaig

xavinet
07-02-2006, 09:30:42
Hola!

Podrias mirar de trabajar con una clase que descienda de la TForm.


TMiForm = Class(TForm)
public
procedure Vaciar;
end;


Así después sólo tendras que llamar al procedure.


Form1.Vaciar;


Ya que todos los formularios tendran el mismo procedimiento.

No se si te habre ayudado mucho, pero la descripción de lo que pretendes es un poco confusa, o yo poco iluminado hoy, todo podria ser :rolleyes:

Hasta pronto!

Neftali [Germán.Estévez]
07-02-2006, 10:13:08
Si pasas el form ya no te hace falta pasar el Grid y el progreso y viceversa.


procedure Vaciar(AGrid:TStringGrid; AProgreso:TProgressBar; ATexto:TEdit);
begin
for i := 0 to AGrid.RowCount - 1 do begin
AGrid.Rows[i].Clear;
end;
AProgreso.Position:=0;
AProgreso.Refresh;
ATexto.Text:='';
end;


Ahora sólo tienes que llamarlo desde cada form y pasarle como parámetro el Grid y el Progreso.

¿Qué problema hay?