Eğer methodlarını listelemek istediğiniz sınıf , birden çok sınıftan kalıtıla gelinerek yazılmış bir sınıfsa;
Alt sınıfın miras alınabilen tüm methodları,üst sınıfında methoduymuş gibi oluyor.
GetMethods ile o sınıfa ait methodları, listelemek istediğinizde taban sınıftaki methodlarda listeleniyor.
Haliyle bu methodlar ne ayak diyorsunuz.
Eğer kendi eklediğiniz methodları listelemek istiyorsanız....
var cntx: TRttiContext; typ: TRttiType; method: TRttiMethod; begin cntx := TRttiContext.Create; typ := cntx.GetType(TServerMethods1); lBoxMethods.Items.Clear; for method in typ.GetMethods do begin if method.Parent.Name = typ.Name then lBoxMethods.Items.Add(method.Name); end; end;
Nerden icab ettiğine gelince...
procedure TForm1.lBoxMethodsDblClick(Sender: TObject); var methodName, url: string; begin methodName := TListBox(Sender).Items[TListBox(Sender).ItemIndex]; StartServer; url := Format('http://localhost:%s/datasnap/rest/TServerMethods1/' + methodName, [EditPort.Text]); ShellExecute(0, nil, PChar(url), nil, nil, SW_SHOWNOACTIVATE); end;
İyi çalışmalar...
Hiç yorum yok:
Yorum Gönder