Вызов метода по его имениDelphi , Компоненты и Классы , Процедуры и ФункцииВызов метода по его имени
Оформил: DeeCo type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); // Your routines (that you'll run by name) must be here procedure Hello_World(Sender: TObject); private procedure ExecuteRoutine(Instance: TObject; Name: string); end; var Form1: TForm1; type TExecute = procedure of object; procedure TForm1.ExecuteRoutine(Instance: TObject; Name: string); var Routine: TMethod; Execute: TExecute; begin Routine.Data := Pointer(Instance); // Returns the address of a published method. Routine.Code := Instance.MethodAddress(Name); if Routine.Code = nil then Exit; Execute := TExecute(Routine); Execute; end; procedure TForm1.Button1Click(Sender: TObject); begin ExecuteRoutine(Form1, 'Hello_World'); end; procedure TForm1.Hello_World(Sender: TObject); begin ShowMessage('This is a test'); end; Привет! В этом коде демонстрируется вызов метода по его имени в языке программирования Delphi. Метод Вот разбивка кода:
Класс
Метод
В методе
Наконец, метод В целом, этот код позволяет вызывать методы динамически по их имени. Это часто используется, когда у вас есть много похожих методов и вы не хотите повторять себя, написавая одинаковый код для каждого метода. В статье описывается пример вызова метода Delphi по его имени с помощью процедуры ExecuteRoutine, которая позволяет выполнить любую рутину объекта. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Процедуры и Функции ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |