Delphi Programming
(→‎[[ECO]] for Win32/Win64/Linux: Avoiding redirects.)
(→‎Interfaces: Fixed link.)
Line 15: Line 15:
   
 
==Interfaces==
 
==Interfaces==
The VCL should make more use of interfaces... maybe even the [[DataSet]] should be changed to be an interface.
+
The VCL should make more use of interfaces... maybe even the [[TDataSet Class|DataSet]] should be changed to be an interface.
   
 
the use of *is* could also check if a class has a specific interface:
 
the use of *is* could also check if a class has a specific interface:

Revision as of 03:38, 4 September 2007

The official way to report bugs and file feature requests is through CodeGear's Quality Central. The ideas presented in this wiki are for discussion purposes. Where applicable, links to QC reports will be provided in the hopes that the community will vote for changes/additions to Delphi.

Renew the VCL

- a renew of the optimal but old VCL, but more an abstraction layer for portability on other platforms, windows native made from borland and from third parts or open source on other platforms (if borland can do it) - diminish the technological gap between vcl and dot net framework that with version 2 it begins to become enormous like generics, heavy use of interface, ...;

It is unclear exactly what the technological gap is, if it even exists. For instance, one might argue that there is a huge technological gap between lisp (50 years old) and .NET (presumably C#?) because lisp allows inline code syntax redefinition, or between python and .NET because of syntactical language features like list comprehensions. One might even argue that .NET (presumably C#) needs to catch up with Delphi regarding code execution speed (certainly initialisation speed). Let not .NET be the guiding light for VCL renewal (which is needed); rather, let's aim for better.

Maybe TTimer should also have it's own thread.

ECO for Win32/Win64/Linux

Interfaces

The VCL should make more use of interfaces... maybe even the DataSet should be changed to be an interface.

the use of *is* could also check if a class has a specific interface:

 for i in Form.Components do
   if (i is iDataSet) and (i.Active=false) then i.Open;

also,

we could have a huge list of generic interfaces that could be implemented by multiple components:

  • Networking
  • Messaging
  • Databases
  • Behavioral
  • ...

Themes

full XP/Vista Theming, not just a manifest that messes-up your panels

Scaling

Better ImageLists

32-bit PNG support in TImageList/TImage. Many current third party components support this but it should be supported natively in Delphi.

MutiCast Events

Allow events to fire multiple methods, which can be disabled at runtime/designtime.

instead of

 p:=DataSet1.OnAfterUpdate;
 DataSet1.OnAfterUpdate:=nil;
 //Do Something Here
 DataSet1.OnAfterUpdate:=p;

you would:

 for p in DataSet1.OnAfterUpdate do p.Enabled:=false; //this disables all events here
 //Do Something Here
 for p in DataSet1.OnAfterUpdate do p.Enabled:=true; //this disables all events here

or even

 DataSet1.OnAfterUpdate.FindMethod('DataSet1AfterUpdate').Enabled:=false;

Databases

A transformation layer between .NET's ADO.NET DataSets and the VCL ClientDataSet.

Accessibility

Unicode VCL

New DBGrid

A newer DBGrid that looks good, and has optional:

  • Sorting.
  • Caching.
  • Owner-Draw cells (with the possibility of having different heights).
  • Filtering.

Assert

ClientDataSet

Improvements on ClientDataSets.