Class inherits from TObject

Top 

Simple example

type

 

TOrderItem = class

  ID: integer;

end;

 

TOrder = class

  ID: integer;

end;

 

TCustomer = class

  ID: Variant;

end;

 

procedure DoStuff1;

 

implementation

 

{ TForm1 }

 

procedure DoStuff1;

var

  Customer: TCustomer;

  Order: TOrder;

  OrderItem: TOrderItem;

begin

  WriteLn('Starting Program in DoStuff 1...');

  WriteLn('Creating Customer...');

  Customer := TCustomer.Create;

  WriteLn('Creating Order...');

  Order := TOrder.Create;

  WriteLn('Creating Order Item...');

  OrderItem := TOrderItem.Create;

  try

    WriteLn('Setting up Customer/Order/OrderItem...');

 

    OrderItem.ID := 99;

    Order.ID := 42;

    Customer.ID := '{18824243-DC3B-4159-932F-7206428656FF}';

 

    WriteLn('All Done....');

  finally

    Customer.Free;

    Order.Free;

    OrderItem.Free;

  end;

end;

 

procedure TForm1.InitializeObject;

begin

  inherited;

  {$I 'Form1:impl'}

  DoStuff1;

end

Console output:

 

Starting Program in DoStuff 1...

Creating Customer...

Creating Order...

Creating Order Item...

Setting up Customer/Order/OrderItem...

All Done.... 

 

Javascript output:

 

var TCustomer = {

   $ClassName:"TCustomer",

   $Parent:TObject

   ,$Init:function ($) {

      TObject.$Init($);

      $.ID$3 = undefined;

   }

   ,Destroy:TObject.Destroy

};

var TOrder = {

   $ClassName:"TOrder",

   $Parent:TObject

   ,$Init:function ($) {

      TObject.$Init($);

      $.ID$2 = 0;

   }

   ,Destroy:TObject.Destroy

};

var TOrderItem = {

   $ClassName:"TOrderItem",

   $Parent:TObject

   ,$Init:function ($) {

      TObject.$Init($);

      $.ID$1 = 0;

   }

   ,Destroy:TObject.Destroy

};

 

function DoStuff1() {

   var Customer = null;

   var Order = null;

   var OrderItem = null;

   WriteLn("Starting Program in DoStuff 1...");

   WriteLn("Creating Customer...");

   Customer = TObject.Create($New(TCustomer));

   WriteLn("Creating Order...");

   Order = TObject.Create($New(TOrder));

   WriteLn("Creating Order Item...");

   OrderItem = TObject.Create($New(TOrderItem));

   try {

      WriteLn("Setting up Customer\/Order\/OrderItem...");

      OrderItem.ID$1 = 99;

      Order.ID$2 = 42;

      Customer.ID$3 = "{18824243-DC3B-4159-932F-7206428656FF}";

      WriteLn("All Done....");

   } finally {

      TObject.Free(Customer);

      TObject.Free(Order);

      TObject.Free(OrderItem);

   }

};

 

 

function WriteLn(value$5) {

   if (window.console) {

      window.console.log(value$5);

   }

};

function $New(c) { 

var i={ClassType:c}; 

c.$Init(i); 

return i 

}

 

 

 

var TObject={

   $ClassName: "TObject",

   $Parent: null,

   ClassName: function (s) { return s.$ClassName },

   ClassType: function (s) { return s },

   ClassParent: function (s) { return s.$Parent },

   $Init: function () {},

   Create: function (s) { return s },

   Destroy: function (s) { for (var prop in s) if (s.hasOwnProperty(prop)) delete s.prop },

   Destroy$: function(s) { return s.ClassType.Destroy(s) },

   Free: function (s) { if (s!==null) s.ClassType.Destroy(s) }

}

 

InitializeObject:function(Self) {

      TW3CustomControl.InitializeObject(Self);

      TW3CustomForm.setCaption(Self,"W3Form");

      TW3Component.SetName(Self,"Form1");

          DoStuff1();

   }