VCL(Visual Component Library)は、DelphiとC++Builderのビジュアル開発の基盤をなすものです。それは、膨大かつ強力なコンポーネントベースのフレームワークであり、高機能なユーザーインターフェイスを備えたWindowsアプリケーションをすばやく簡単に作成可能にしています。豊富なサードパーティコンポーネントとの組み合わせにより、VCLは文字通り、ソフトウェア開発における主要なアプリケーションフレームワークの地位を占めているといえます。
Delphi 2009の新機能
新しいクラスとコンポーネント
Unicodeサポート
すべてのVCLコントロールは、Unicodeキャラクターの表示をサポートするようになりました。

リボンコントロール
Delphi 2009には、Office 2007のユーザーインターフェイスを実装したVCLコンポーネントのフルセットが含まれています。「リボンコントロール」として広く知られるこれらのコンポーネントにより、強力かつ高機能なユーザーインターフェイスの開発を可能にします。

TCategoryPanelGroup
TCategoryPanelGroupは、任意の数の折りたたみ可能なパネルを持つことのできる、Microsoft OutlookのEメールクライアントにある「Outlookバー」コントロールのような新しいVCLコントロールです。任意の数のコントロールをパネル上に配置でき、パネル自身も設定可能です。

TButtonedEdit
TButtonedEditは、設定可能なグリフを内部に持つエディットボックスです。グリフは、エディットボックスの右端と左端に表示されます。それぞれのグリフは、クリックイベントがあり、それぞれのグリフをクリックしたときに実行されるコードを指定できます。

TBalloonHint
すべてのコンポーネントは、CustomHintプロパティを有するようになりました。これは、TCustomHintを継承した任意のコンポーネントを参照できます。VCLは、TCustomHintを継承したTBalloonHintを提供しており、タイトルやグラフィックを追加できるバルーンヒントを表示できます。

TPNGImage
VCLは、新たに、TPNGImage クラスによってPNGイメージフォーマットをサポートするようになりました。TImageとTImageListは、いずれもTPNGImageに対応しています。
強化されたクラスとコンポーネント
TImageListの強化
TImageListは、TImageによって登録されたすべてのタイプのイメージを含めることができるようになりました。また、TImageListは、アルファブレンディングもサポートしています。
TButtonの強化
TButtonは、TImageListを保持できるようになり、ボタンにイメージを表示できるようになりました。イメージは、任意の位置に合わせて配置できます。また、TButtonは、Vistaの機能であるコマンドリンクやスプリットボタンをサポートする新しいスタイルも含まれるようになりました。
TListViewの強化
TListViewでは、項目をグループで配置できるようなりました。

TTreeViewの強化
TTreeViewでは、項目が開かれているかたたまれているかによって、異なるグリフを表示できるようになりました。
TProgressBarの強化
TProgressBarは、ポーズ、エラーを含むVistaスタイルをサポートしています。また、Vistaの機能であるマーキースクロールにも対応しています。
TEditの強化
TEditは、「テキストTip」をサポートします。これは、コントロールに何も入力されておらずフォーカスがないときに表示されるテキストです。これは通常、ヒントを表示するために使います。例えば、「パスワードを入力してください」いったヒントが最初に表示されるようにします。TEditでは、新たにNumbersOnlyプロパティが追加され、数字のみが入力できるように設定できるようになりました。
一般的な機能
TForm
VCLの基本コンテナはTFormです。TFormはウィンドウのコンセプトをカプセル化したVCLクラスです。TFormには、他のコンポーネントを配置することができます。TFormは、サイズ変更可能なフォーム、サイズ固定のフォーム、ダイアログ、ツールウィンドウなどに使用できます。Microsoft Windows OSのウィンドウの標準的な動作に加え、スクロール、アルファブレンド、ドラッグ&ドロップ、透過、他のフォームやコントロールのドッキング、他のコントロールのためのヒントの表示、スクリーンスナップ、Vista Aeroインターフェイスなどをサポートしています。
アプリケーションテーマ
VCLアプリケーションは、プロジェクトオプションの簡単な設定で自動的にテーマをサポートすることができます。
このオプションを設定すれば、IDEは自動的に必要なテーママニフェストを対象のプロジェクトのリソースに追加するので、テーマアプリケーションとして実行されます。

Vistaサポート
Vista Aeroのサポート
VCLでは、自動的にVista Aeroユーザーインターフェイスをサポートします。
フォームには、GlassFrameプロパティがあり、VCLアプリケーションをAeroインターフェイスのグラス機能を使って表示します(下図参照)。

Vistaダイアログのサポート
Windows Vistaの新しいダイアログをサポートするコンポーネントを搭載しています。また、Vista環境では、既存のダイアログをVistaダイアログとして表示するオプションを選択することもできます。


マージンとパディング
AlignWithMarginsプロパティをTrueに設定してAlignプロパティをalNone以外に設定していると、コントロールは、位置合わせを行うときに、そのコントロール自身のMarginプロパティと、そのコントロールが配置されているコンテナのPaddingプロパティに従って配置されます。
例えば、以下は、フォーム上のTPanelです。パネルは、AlignWithMarginsプロパティがあり、Trueに設定されています。そして、Marginのすべての値は20に設定されています。加えて、フォーム自身のPadding.Bottomプロパティは30に設定されています。
IntelliMouseのサポート
VCLでは、マウススクロールをサポートしているすべてのコンテナクラスで、IntelliMouseスクロールに対応しています。
以下は、TMemoコントロールでIntelliMouseサポートを動作させているところです。

コンポーネント
レイアウトコンポーネント
VCLには、フォーム上にビジュアルコンポーネントをレイアウトするためのいくつものコンポーネントがあります。
TPanel
TPanelコンポーネントは、他のコンポーネントをその上に配置できるフォーム上の一定領域として使うシンプルなコンテナコンポーネントです。

TSplitter
TSplitterコンポーネントは、クライアント領域をサイズ変更可能な2つの領域に分割するために使います。
以下は、Splitterコントロールをフォーム上を3つのサイズ変更可能な領域に分割するために使った例です。

TGridPanel
TGridPanelは、各コンポーネントをグリッドで区切られたセル上に配置するグリッドパネルコントロールです。グリッドパネルを用いれば、パネル上に複数行、複数列の領域を設定して、マウス操作で位置を指定する代わりに、各コンポーネントを順番にセル上に配置させることができます。もしグリッドの各セルにコントロールが配置されており、さらに新しいコントロールが追加されたときには、ExpandStyleプロパティの設定によって新しいコントロールの位置が決まります。例えば、例えば、ExpandStyle プロパティのデフォルト値 AddRows を指定したときには、グリッドに新しい行が追加され、行の各セルに新しいコントロールが配置されます。

TFlowPanel
TFlowPanelは、TPanelを継承しており、FlowStyleプロパティに基づいて、「フロー」スタイルでその上に配置されたコンポーネントをレイアウトします。デフォルトは、fsLeftRightTopBottom で、TFlowPanelは、その上に配置されたコンポーネントを左から右へ、上から下へ、順番にレイアウトします。TFlowPanelの機能は、Webブラウザのテキストや他の表示要素のレイアウトと同じような機能を果たします。

TTrayIcon
TTrayIcon を用いれば、VCLアプリケーション用にタスクトレイにアイコンを置くことができます。このコントロールは、バルーンヒントやポップアップメニューの機能も提供します(下図参照)。

ActionList/ActionManager
Actionは、ユーザー定義のコマンドを扱う非ビジュアルコンポーネントです。Actionを使えば、コマンドに関連するすべてのユーザーインターフェイスプロパティ、例えば、コマンドを実行するのに必要なコード、イメージ、コマンドに結び付けられたショートカットなどを一箇所で集中管理できます。
ActionManagerとあわせてActionを使うことで、強力かつ柔軟なユーザーインターフェイスを作成できます。ActionManagerは、ユーザーカスタマイズが可能なツールバーの作成も可能にします。
ActionListコンポーネントには、標準コマンドやユーザー定義のコマンドのリストを含めることができます。
ActionManagerは、コマンドを管理するために使います。また、ActionMenuBarsやActionToolBarsに簡単に追加することができます。ActionManagerは、「ファイル」「編集」「検察」といったメニュー構造の標準アクションの完全なセットも含まれています。
以下は、ActionManagerコンポーネントをImageListコンポーネントと組み合わせて使っているアプリケーションの設計時の例です。

Windowsコモンコントロールのサポート
VCLでは、すべての標準Windowsコモンコントロールをラップしたコンポーネントを提供しています。

標準Windowsコントロールコンポーネント
VCLでは、すべての標準Windowsコントロールをラップしたコンポーネントを提供しています。

Windowsダイアログコンポーネント
VCLでは、標準Windowsダイアログを極めて簡単に利用できるようにする強力なコンポーネントセットを提供しています。標準ダイアログに加え、検索、置換ダイアログや、色選択ダイアログ、印刷ダイアログなども含まれます。

さらに、VCLでは、TTaskDialogなど、VistaベースのWindowsダイアログもサポートしています。
その他のコンポーネント
VCLには、高度なユーザーインターフェイスの構築を飛躍的に簡単にする豊富なコンポーネントセットが含まれています。イメージの表示、ボタンへのイメージの配置、色の選択、リストボックスでの項目のチェック、入力ボックスでのフィルターや入力制限、コントロールバーの追加、カテゴリー分けされたグループボタン、色設定などを個別に行えるツールバーなど、豊富なコンポーネントが用意されています。

データベース対応コンポーネント
VCLには、データベース対応コンポーネントセットが含まれており、ユーザーインターフェイスの一部として、データベースデータを表示・編集できます。

インターネットコンポーネント(Indy)
RAD Studioには、Internet Direct (Indy)と呼ばれる、コンポーネントによってソケットベースの通信をサポートした豊富なコントロールセットが含まれています。Internet Directでは、HTTP、NNTP、TCP、UDP、FTPなどの主要なインターネットプロトコルをサポートしたコンポーネントを提供します。
Internet Directは、Delphiコミュニティによるオープンソースプロジェクトのひとつです。