Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Pasar TForm a un procedure (https://www.clubdelphi.com/foros/showthread.php?t=74040)

pennylane 27-05-2011 10:46:36

Pasar TForm a un procedure
 
Hola.

Estoy intentado hacer una función genérica para poder modificar las propiedades de los Labels de diferentes formularios

El problema lo tengo al pasar un TForm a un procedure y he leído varios hilos pero no me han funcionado las soluciones. He probado a pasarlo como Class y tampoco funciona... La verdad es que me pierdo en esto y he leído mucho pero me cuesta entender el problema.
El error que me da es "delphi this form of method call only allowed for class methods"


Llamada:
Código Delphi [-]
procedure TFORM1010.FormActivate(Sender: TObject);
begin
     TVariables.CargaCabecera(Form1010, 'Mantenimiento');
end;

Procedimiento:
Código Delphi [-]
procedure TVariables.CargaCabecera(Formulario: TForm; Titulo:String);
begin
     Formulario.Caption := Titulo;
     for i := 0 to (Formulario.ComponentCount - 1) do
     begin
          if (Formulario.Components[i] is TLabel) then
          begin
               TLabel(Formulario.Components[i]).Font.Size := 8;
               TLabel(Formulario.Components[i]).Font.Color := clNavy;
          end;
     end;
end;

Ñuño Martínez 27-05-2011 12:55:23

Lo que te está diciendo es que "TVariables" es una clase, no un objeto, por lo que no puede ejecutarse el método ya que no sabe a qué objeto pertenece.

Quizá si lo declaras como un "procedimiento de clase" sí funcione, pero no lo recomiendo ya que no es algo "Orientado a objetos".

pennylane 27-05-2011 14:35:49

TVariables es un formulario (DataModule) donde tengo las funciones del programa.

Código Delphi [-] TVARIABLES = class(TDataModule)

pennylane 27-05-2011 14:43:39

Gracias... Menudo fallo... Estaba ciego. La llamada a la función no era correcta

Código Delphi [-]
procedure TFORM1010.FormActivate(Sender: TObject); 
begin      
       Variables.CargaCabecera(Form1010, 'Mantenimiento');
end;


La franja horaria es GMT +2. Ahora son las 00:17:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi