Description |
The Is keyword is used to test to see whether an object belongs to a class, or parent of that class.
For example, you may test to see whether a graphical component (normally called 'Sender') is a TButton, or TList or whatever.
All objects belong to the TObject class, from which they are ultimately derived.
|
|
Related commands |
As |
|
Used for casting object references |
Class |
|
Starts the declaration of a type of object class |
Object |
|
Allows a subroutine data type to refer to an object method |
TObject |
|
The base class type that is ancestor to all other classes |
|
|
|
Example code : Illustrate use of is on a class hierarchy |
// Full Unit code. // ----------------------------------------------------------- // You must store this code in a unit called Unit1 with a form // called Form1 that has an OnCreate event called FormCreate.
unit Unit1;
interface
uses
Forms, Dialogs, Classes, Controls, StdCtrls;
type // Define new class types
TFruit = class
public
name : string;
published
constructor Create(name : string);
end; // Define two descendant types
TApple = class(TFruit);
TPear = class(TFruit);
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm} // Include form definitions
// Create a fruit object
constructor TFruit.Create(name: string);
begin
self.name := name;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
fruit : TFruit;
apple : TApple;
pear : TPear;
begin // Create 2 different fruit objects
apple := TApple.Create('Pink Lady');
pear := TPear.Create('Comice');
// They are both TFruit or descendant types
if apple Is TFruit then ShowMessage(apple.name +' is a fruit');
if pear Is TFruit then ShowMessage(pear.name +' is a fruit');
// Apple is also a TApple type
fruit := apple;
if fruit Is TApple then ShowMessage(apple.name +' is an apple');
// But apple is not a pear if fruit Is TPear // 'if apple is TPear' does not compile
then ShowMessage(apple.name+' is a pear')
else ShowMessage(apple.name+' is not a pear');
end;
end.
|
Pink lady is a fruit
Comice is a fruit
Pink lady is an apple
Pink lady is not a pear
|
|