2014-09-15 3 views
1

Я изучаю бесплатный паскаль с помощью Lazarus IDE, и я не знаю, как наследовать методы в производной форме.Наследование в FreePascal Lazarus

Я хочу что-то вроде этого:

Форма основания или отца:

procedure HelloWorld; 
begin 
ShowMessage('Hello World from base form or father'); 
end; 

и форме, полученные или ребенок:

procedure HelloWorld; 
begin 
    inherited; 
    ShowMessage('Hello World from derived form or child'); 
end; 

Я хочу, чтобы результат показывает 2 сообщения, нажав (например, Button1)

Спасибо !!!

ответ

2

В Pascal procedure не является объектно-ориентированной конструкцией программирования.

FreePascal включает objects и объекты могут включать в себя процедуру:

2

Для лучшего понимания предмета Паскаля языка, я полагаю, вы должны начать с чтением FreePascal справочника. FreePascal является подмастерным компилятором ниже lazarus.

Его важно понимать, что формы, ярлыки, кнопки, и т.д., являются конкретные воплощения концепций объектов, экземпляры классов и т.д.

В этой связи, класс представляет собой структуру связывания кода и данных. То, что вы хотите достичь что-то вроде этого:

Type 
TMyClass = Class(<ancestorclass>) 
<fields and methods> 
End; 

TMyChildClass = Class(TMyClass) 
<fields and methods> 
End; 

Это означает, что TMyChildClass является класс, производный от TMyClass. В том случае, если у вас есть методы в обеих классах с таким же именем, вы можете использовать ключевое слово «переопределение», чтобы показать компилятор, что этот метод был переопределен в классе ребенка, как это:

TMyClass = Class /* No parenthesis or ancestor name means the class derives from TObject */ 
Procedure ParentMethod; 
End; 

TMyChildClass = Class(TMyClass) 
Procedure ParentMethod; Override; 
End; 

Procedure TMyClass.ParentMethod; 
Begin 
DoSomething; 
End; 

Procedure TMyChildClass.ParentMethod; /* Dont repeat the override */ 
Begin 
Inherited; // This will call the parents method 
End; 

Это правильное способ сделать переопределение метода в объекте pascal. Если определение класса, в котором вы хотите использовать «унаследованный», не имеет круглых скобок и имени класса предков, то отношения между родителями и потомством не будут делать то, что вы ожидаете сделать.