//Digest that for a while, now consider how to use this.
var x: TBaseClass;
begin
x := TDerivedClass.Create;
ShowMessage(IntToStr(x.GetSize));
x.SetSize(50); //<< this line causes an abstract run time error because
//TDerived class does not implement SetSize.
//The compiler will compile, but a warning will //be generated.
end;

//Calling x.GetSize will call the GetSize in TDerivedClass, not TBaseClass even though x is of type TBaseClass.

//x is of type TBaseClass, but it can be created using TDerivedClass since TDerivedClass is derived from TBaseClass

Just another thing, you shouldn't wrap up the essence of someone elses comment and try to get points for it.

A lot of questions regard threads in Delphi.
One of the more specific questions is how to show progress of the thread.
Updating a progressbar from inside a thread is a mistake.
A solution to this would be to send a synchronized message to the…

Introduction
Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview. I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…

Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…