Bazı form sınıflarımın aynı işlevi gerçekleştirmesine ihtiyacım var.Bir TClass'tan oluşturulan bir nesneden bir arayüz nasıl alınır?
(benim formların çoğunda yararsız olacak bir işlev eklemek istemiyorum çünkü ortak bir anchestor formuna bu işlevi ekleyerek fikrini atılır ettik.)
Yani ... Arayüz kullanımı hakkında düşündüm. Bu gibi basit durumlarda
IMyInterface = interface
procedure ShowHello();
end;
var
MyForm : TMyForm;
MyInterface : IMyInterface;
begin
MyForm := TMyForm.Create(Self);
MyInterface := MyForm;
//...
end;
, bu hatasız çalışır, ancak başvurum dinamik paketlerini kullanır ve form sınıfları elde etmek amacıyla "getClass" işlevini kullanıyorum. Ben şöyle çalıştı:
It "Uyumsuz türleri: 'IMyInterface' ve 'TForm'" nedenvar
MyForm : TForm;
MyInterface : IMyInterface;
begin
MyForm := TForm(GetClass('TMyForm').Create());
MyInterface := MyForm;
end;
hatası. Arayüzleri kullanarak hedefime ulaşmanın bir yolu var mı yoksa başka yollardan denemek daha mı iyi olurdu? Bir arabirimin uygulanıp uygulanmadığını denetlemek için Supports
işlevini kullanın
Önerildiği gibi yaptım, ancak yanlış sonuçları destekler. TMyForm sınıfı "TMyForm = class (TForm, IMyInterface)" olarak bildirilmiştir. Eksik bir şey mi var? – ExDev
Arabirim tipinin, bildiriminde benzersiz bir GUID olması gerekiyor. GUID var mı? – Wosi
Evet, bir tane almak için Ctrl + ÜstKrkt + G tuşlarına bastım ve IMyInterface bildirimine ekledim. – ExDev