VCL/RTL

Welcome to our official feedback forum. Do you have an idea? Do you recognize a good idea when you see one? We want to hear from you!

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  1. Add interface support for basic VCL classes

    Most of the classes in VCL don't have interfaces support. F.e. add interface IStrings(TStrings), IField(TField), IDataset(TDataset), IDatasource and so on.
    You have created great VCL classes hierarchy, just add similar interfaces hierarchy - this is so easy to implement, but can significantly improve coding speed.
    F.e., just imagine common interface for DbControls - IDBControl, which may look like that(:
    property Datasource: IDatasource;
    property Fieldname:string;
    property DataField: IField;
    Adding such interface will make work with different DbControls much easier.

    And so on with other classes.

    Passing interfaces will make possible to interact between DLL-s, that were compiled different Delphi versions, and…

    236 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    7 comments  ·  Flag idea as inappropriate…  ·  Admin →
  2. GDI+ canvas

    GDI+ canvas and GDI+ controls

    180 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Flag idea as inappropriate…  ·  Admin →
  3. Worker Thread Component

    I think, it would be easier to implement multithreading with thread components.

    45 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  4. Event View Component

    It would be great to have a VCL component to access the Windows Event Viewer easily ... creating/deleting event sources, writing messages, reading messages, ...

    40 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  5. Conection lines between linked components

    It would be realy cool (especially for Database development), when I can see which data components are linked together. e.g.: TxDatabase <- TxQuery <- TDataSetProvider <- TClientDataset <- TDataSource ...
    But only in TDataModule of course. ... I already saw that in some old delphi books???

    36 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  6. OOP organized RTL

    Add TString class with basic operations

    Isn't it a high time to become a more OOP oriented?
    IOUtils is a good starting point in this direction.

    Now lets make a static class TString with static memebers for Concat, Split, Join, Replace, EndsWith, StartsWith, Contains, Copy, Remove, etc.

    Just take the .NET String class members and make a Delphi version.

    I am not insisting on haing Strings being theated like objects, just keen on having one

    TString.Replace(buffer, 'Gad D Lord', 'author')

    with first paramter the instance to operate over.

    I really hate to rememeber whether SysUtils or StrUtils is what I…

    17 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  7. A simultaneous Vertical and Horizontal splitter.

    such as splitting in Spreadsheets.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  8. Add iphone-like scrollbar

    The scrolling effect on the iphone and other phones. I think its called 'smooth scrolling'.

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  9. TPath.Combine(Paths: array of string): string

    Add an overload for TPath.Combine which takes unlimited number of paths as array:

    class function Combine(Paths: array of string): string; overload; static;

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  10. Some additional IOUtils goodies

    Thanks Malcolm for implementing almost all of my recommendations. Maybe just a considence but I managed to deprecate almost all of my unt_Path, unt_Directory, unt_File methods.

    What I still miss is:

    class function TDirectory.IsReservedName(DirectoryName: string): Boolean;
    begin
    DirectoryName := LowerCase(DirectoryName);
    if (DirectoryName = 'con') or
    (DirectoryName = 'aux') or
    (DirectoryName = 'prn') or
    (DirectoryName = 'nul') or
    (DirectoryName = 'lpt0') or
    (DirectoryName = 'lpt1') or
    (DirectoryName = 'lpt2') or
    (DirectoryName = 'lpt3') or
    (DirectoryName = 'lpt4') or
    (DirectoryName = 'lpt5') or
    (DirectoryName = 'lpt6') or
    (DirectoryName = 'lpt7') or
    (DirectoryName = 'lpt8') or
    (DirectoryName = 'lpt9') or
    (DirectoryName = 'com0')…

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  11. Add TDirectory.IsReservedName

    Add a missing class function
    class function TDirectory.IsReservedName(DirectoryName: string): Boolean;
    begin
    DirectoryName := LowerCase(DirectoryName);
    if (DirectoryName = 'con') or
    (DirectoryName = 'aux') or
    (DirectoryName = 'prn') or
    (DirectoryName = 'nul') or
    (DirectoryName = 'lpt0') or
    (DirectoryName = 'lpt1') or
    (DirectoryName = 'lpt2') or
    (DirectoryName = 'lpt3') or
    (DirectoryName = 'lpt4') or
    (DirectoryName = 'lpt5') or
    (DirectoryName = 'lpt6') or
    (DirectoryName = 'lpt7') or
    (DirectoryName = 'lpt8') or
    (DirectoryName = 'lpt9') or
    (DirectoryName = 'com0') or
    (DirectoryName = 'com1') or
    (DirectoryName = 'com2') or
    (DirectoryName = 'com3') or
    (DirectoryName = 'com4') or
    (DirectoryName = 'com5') or
    (DirectoryName = 'com6') or
    (DirectoryName…

    2 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

VCL/RTL

Feedback and Knowledge Base