Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизКак сформировать свой экземпляр типа TMethod ? Найти похожие ветки
← →
>|< (2011-03-16 12:41) [0]Нужно через RTTI задать новый обработчик методу OnClick
var i:integer;
// AMethod, LoggedMethod:TMethod;
ALoggedMethod:TNotifyEvent;
ALoggedMethod := self.LoggedClick;
if GetPropInfo(Components[i],"OnClick")<>nil then
SetMethodProp(Components[i],"OnClick", ALoggedMethod);
Так не работает.
Как правильно задать ссылку на код и дату метода self.LoggedClick?
← →
Игорь Шевченко © (2011-03-16 12:53) [1]
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure LoggedButton1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses
TypInfo;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage("Clicked");
end;
procedure TForm1.FormCreate(Sender: TObject);
var
AMethod: TNotifyEvent;
begin
AMethod := LoggedButton1Click;
if IsPublishedProp(Button1, "OnClick") then
SetMethodProp(Button1, "OnClick", TMethod(AMethod));
end;
procedure TForm1.LoggedButton1Click(Sender: TObject);
begin
Memo1.Lines.Add("Button1Click");
Button1Click(Sender);
end;
end.
← →
>|< (2011-03-16 13:01) [2]Спасибо, работает!
← →
>|< (2011-03-16 13:07) [3]
> Button1Click(Sender);
А как вызвать Button1Click, если у меня есть только значение TMethod?
Нашел ф-ции MethodName и MethodAddress, но пока не в курсе, как их использовать, чтобы вызвать код, который хранится по указанному адресу.
← →
DiamondShark © (2011-03-16 13:47) [4]
> А как вызвать Button1Click, если у меня есть только значение
> TMethod?
Очевидно, преобразовать его в TNotifyEvent.
← →
>|< (2011-03-16 14:17) [5]
> Очевидно, преобразовать его в TNotifyEvent.
>
Да, логично. Спасибо за подсказку.
Но возникли проблемы другого характера, которые я пока не в силах решить...
Проблемы следующие:
При нажатии кнопки, создается другая форма, для которой задается ряд параметров.При замене обработчика этой кнопки, форма создается, но параметры теряются.
Возможно, область памяти с данными затирается массивом ссылок на методы...
механизм которых реализован в этой ветке http://delphimaster.net/view/2-1300268485/ ...
← →
>|< (2011-03-16 14:28) [6]
> >|< (16.03.11 14:17) [5]
Вопрос снимается. Нужно было перекомпилить все модули :-)
← →
OW © (2011-03-16 17:04) [7]
> >|< (16.03.11 14:17) [5]
> механизм которых реализован в этой ветке http://delphimaster.
> ru/cgi-bin/forum.pl?id=1300268485&n=18 ...
рекурсия, однако :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c