DWScript'in Delphi formundaki bir denetim için olay işleyicisi olarak bir komut dosyası yöntemi kullanmasını destekleyip desteklemediğini merak ediyorum. Örneğin, bir TButton OnClick olayını komut dosyasında mevcut bir yönteme bağlamak istiyorum.Delphi Web Komut Dosyası (DWScript) bir dış denetim olayına bir komut dosyası bağla
Bunu, bir TMethod nesnesini döndüren GetProcMethod öğesini çağırarak RemObjects Delphi komut dizisi ile yapabiliyorum. Daha sonra, bir düğmenin OnClick olayına komut dosyası yöntemini atamak için SetMethodProp kullanıyorum.
procedure LinkMethod(SourceMethodName: String; Instance: TObject; ScriptMethodName: String);
var
ScriptMethod: TMethod;
begin
ScriptMethod := ScriptEngine.GetProcMethod(ScripMethodName);
SetMethodProp(Instance, SourceMethodName, ScriptMethod);
end;
Bunu, ihtiyacım olan diğer bazı şeyler gibi, Rem nesneleri komut dosyası motoru yerine DWScript'te yapmak istiyorum.
Bunun için teşekkürler. Ne yazık ki, çalışma zamanına kadar gerekli olan parametrelerin etkinliğinin adını bilmeyeceğim. RemObjects, olay çağrısını engelleyen ve parametreleri komut dosyası olay işleyicisine iletme işlemlerini gerçekleştirir. Bu şekilde, derleme zamanında çağrılan yöntem hakkında bir şey bilmenize gerek yoktur. DWS'nin böyle bir şey yaptığını umuyordum. –
Şu an bitti değil çünkü DWScript tam olarak kumlanabilir ve güvenlik amaçlarına yöneliktir, RemObject kullanımı, parametreler arasında bir uyumsuzluk olduğunda bellek bozulmasına veya çökmelere neden olur. RTTI bu konuda biraz ilerlemiş, ancak bellek sızıntılarına veya AV'ye karşı savunmasız kalacaktır, çünkü Delphi olayları için bellek yönetimini otomatikleştirmenin bir yolu yoktur. Birisi bu sınırlamalarla yaşayabilir ve destekleyici kodu yayınlayabilirse, bunu uygun "dikkat" notları ile entegre edeceğim ;-) –