|
@@ -0,0 +1,75 @@
|
|
|
+{ Source provided for Free Pascal Bug Report 3997 }
|
|
|
+{ Submitted by "Dominique Louis" on 2005-05-21 }
|
|
|
+{ e-mail: [email protected] }
|
|
|
+
|
|
|
+{$mode delphi}
|
|
|
+program Project1;
|
|
|
+
|
|
|
+{$APPTYPE CONSOLE}
|
|
|
+
|
|
|
+uses
|
|
|
+ SysUtils;
|
|
|
+
|
|
|
+type
|
|
|
+ TMyNotifyEvent = procedure of object;
|
|
|
+
|
|
|
+ TMyBaseWindow = class( TObject )
|
|
|
+ private
|
|
|
+ FOnRender: TMyNotifyEvent;
|
|
|
+ public
|
|
|
+ property OnRender: TMyNotifyEvent read FOnRender write FOnRender;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TBaseInterface = class( TObject )
|
|
|
+ protected
|
|
|
+ procedure Render; virtual; abstract;
|
|
|
+ public
|
|
|
+ MainWindow : TMyBaseWindow;
|
|
|
+ constructor Create;
|
|
|
+ destructor Destroy; override;
|
|
|
+ procedure ResetInputManager;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TMyInterface = class( TBaseInterface )
|
|
|
+ protected
|
|
|
+ procedure Render; override;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+{ TBaseInterface }
|
|
|
+constructor TBaseInterface.Create;
|
|
|
+begin
|
|
|
+ inherited;
|
|
|
+ WriteLn( 'TBaseInterface.Create' );
|
|
|
+ MainWindow := TMyBaseWindow.Create;
|
|
|
+ ResetInputManager;
|
|
|
+end;
|
|
|
+
|
|
|
+destructor TBaseInterface.Destroy;
|
|
|
+begin
|
|
|
+ MainWindow.Free;
|
|
|
+ inherited;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TBaseInterface.ResetInputManager;
|
|
|
+begin
|
|
|
+ WriteLn( 'ResetInputManager' );
|
|
|
+ MainWindow.OnRender := Render;
|
|
|
+end;
|
|
|
+
|
|
|
+{ TMyInterface }
|
|
|
+procedure TMyInterface.Render;
|
|
|
+begin
|
|
|
+ WriteLn( 'Rendering' );
|
|
|
+end;
|
|
|
+
|
|
|
+var
|
|
|
+ MyInterface : TMyInterface;
|
|
|
+
|
|
|
+begin
|
|
|
+ MyInterface := TMyInterface.Create;
|
|
|
+
|
|
|
+ MyInterface.Render;
|
|
|
+
|
|
|
+ MyInterface.Free;
|
|
|
+end.
|