если не использовать вызов процедуры
begin
Label1.Caption:='Next message';
end;
procedure TForm1.WM_PrevMSG (Var M : TMessage);
begin
Label1.Caption:='Previous message';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{ если не использовать вызов процедуры из DLL в программе,
то компилятор удалит загрузку DLL из программы}
P:=@Key_Hook;
end;
end.
Конечно, свойство Caption в этой форме должно быть установлено в “XXX”.
2.0 Вызов методов дальних предков
Проблема в следующем. Допустим, есть иерархия классов, у которых перекрывается (override) один и тот же виртуальный (или динамический - не важно) метод, и в одной из реализаций этого метода вы хотите вызвать виртуальный метод предка своего предка (“дедушки”, “прадедушки” и т.д.). Новая объектная модель Delphi допускает только вызов методов непосредственного предка (с помощью ключевого слова inherited) либо вызов методов класса с префиксом - типом класса (например, TLevel1.ClassName).
Эта задача стандартными средствами не решается. Но сделать требуемый вызов можно. Причем, способом, показанным ниже, можно вызвать любой метод для любого класса, однако, в этом случае вся ответственность за правильность работы с методами и полями ложится на программиста. В примере, приведенном ниже, в методе VirtualFunction класса TLevel3 напрямую вызывается метод класса
TLevel1 (метод “деда”). В функции Level1Always
всегда вызывается метод класса TLevel1
для любого его наследника.
{декларация классов}
TLevel1 = class(TComponent)
public
function VirtualFunction: string; virtual;
end;
TLevel2 = class(TLevel1)
public
function VirtualFunction: string; override;
end;
TLevel3 = class(TLevel2)
public
function VirtualFunction: string; override;
end;
function Level1Always(MyLevel: TLevel1): string;
implementation
type
PClass = ^TClass;
{виртуальная функция “дедушки”}
function TLevel1.VirtualFunction: string;
begin
Result := 'Level1';
end;
{виртуальная функция “отца”, вызывает унаследованный метод “дедушки”}
function TLevel2.VirtualFunction: string;
begin
Result := inherited VirtualFunction+' Level2';
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий