Допустим нарисовал я кнопку. И еще, еще...
А как сделать эту обьектно-орентированность (блин, слово то какое) не пойму!
Может кто обьяснит?
Type
TButton
Left:Integer;
Top:Integer;
Width:Integer;
Height:Integer;
Color:Integer;
Procedure Paint;
End;
Procedure TButton.Paint;
Begin
SetBackgroundColor(Color); {или как там оно зовётся...}
Bar(Left,Top,Left+Width-1,Top+Height-1)
End;
Type
TControl=Object
Procedure Paoint;Virtual;
end;
Var
Controls:Array[{...}] Of TControl;
i:Integer;
Begin
For i:=1 To ControlsCount Do
Controls[i].Paint
End.
SEGMENT VMT_Seg PUBLIC
ENDS VMT_Seg
MACRO VMTSeg
SEGMENT VMT_Seg
ENDM VMTSeg
@VMTSeg = VMT_Seg
MACRO LoadVMTSeg reg
PUSH @VMTSeg
POP Reg
ENDM LoadVMTSeg
MPTR EQU <DWORD>
MACRO MakeVMT
VMTSeg
TBLINST
ENDS
CODESEG
ENDM MakeVMT
MyObject Struc
MyMethod MPTR MyObject_MyMethod
MyObject EndS
VIRTUAL MyFun MPTR MyObj_MyFun
Type
TObject=Object
Constructor Create;
Procedure Free;
Destructor Destroy;Virtual;
End;
Constructor TObject.Create;
Begin
End;
Destructor TObject.Destroy;
Begin
End;
Procedure TObject.Free;
Begin
Dispose(this,Destroy)
End;
{Creating static object}
PUSH @DATA
PUSH OFFSET InstanceOfMyObject
CALL TSomeObject.Create
{Creating dinamic object}
XOR AX,AX
PUSH AX
PUSH AX
CALL TSomeObject.Create
MOV BX,[WORD PTR InstanceOfMyObject] {Get Offset Of VMT}
MOV AX,@DATA {Segment, where VMT Are Located}
MOV ES,AX
CALL [FAR PTR ES:(BX + 4*MethodNumber)]
PUSH SEG MyObj
PUSH OFFSET MyObj
CALL TObject.Free