![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#9
|
|||
|
|||
|
Hola de nuevo.
Os voy a poner el codigo de prueba que estoy realizando. Esta es la interface: Código:
unit MyInterface;
interface
type
IMyInterface = interface ['{6E93F07C-AD0C-494B-85BC-A960AF01EF0A}']
procedure HacerAlgo();
end;
implementation
end.
Código:
unit MyClass;
interface
uses QExtCtrls,Dialogs,MyInterface;
type
TMyClass=Class(TTimer,IMyInterface)
procedure HacerAlgo();
end;
implementation
procedure TMyClass.HacerAlgo();
begin
showmessage('Estoy haciendo algo');
end;
end.
Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ExtCtrls,MyClass,MyInterface ;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Miprocedimiento(Objeto:TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MiClase:TMyClass;
begin
MiClase:=TMyClass.create(self);
MiProcedimiento(MiClase);
MiClase.Free;
end;
procedure TForm1.Miprocedimiento(Objeto:TObject);
begin
if Supports(Objeto,IMyInterface) then
(Objeto as IMyInterface).HacerAlgo();
end;
end.
En el caso de declarar Objeto como TObject, se produce el siguiente error de compilación:"Operator not aplicable to this operand type" en la línea "(Objeto as IMyInterface).HacerAlgo();" y es por la sentencia as Puedo hacer typecast a Objeto para que sea TMyClass, pero el problema es que no todos los objetos que recibirá será TMyClass. No se como puedo arreglarlo. Gracias de nuevo. Salu22222 |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|