文字列リストへのイメージの追加
コントロールの利用:インデックス への移動
アプリケーションに追加したグラフィックイメージは,文字列リストの文字列と関連付けることができます。グラフィックイメージオブジェクトは,文字列と同時に追加することも,既存の文字列に後から関連付けることもできます。必要なデータがすべてある場合,AddObject メソッドはオブジェクトと文字列を同時に追加します。
次の例では,文字列リストにイメージを追加する方法を示します。これは,ファイルマネージャアプリケーションのサンプルで,各ドライブを示す文字と各ドライブの種類を示すビットマップを同時に追加します。このために,フォームの OnCreate イベントハンドラを次のとおりに更新します。
procedure TFMForm.FormCreate(Sender: TObject);
var
Drive: Char;
AddedIndex: Integer;
begin
for Drive := 'A' to 'Z' do { すべてのドライブ名を調べる }
begin
case GetDriveType(Drive + ':/') of { 有効なドライブの場合,正の値が返る }
DRIVE_REMOVABLE: { タブを追加 }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Floppy.Picture.Graphic);
DRIVE_FIXED: { タブを追加 }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Fixed.Picture.Graphic);
DRIVE_REMOTE: { タブを追加 }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Network.Picture.Graphic);
end;
if UpCase(Drive) = UpCase(DirectoryOutline.Drive) then { 現在のドライブかどうかをチェック }
DriveTabSet.TabIndex := AddedIndex; { 現在のドライブのタブを選択状態にする }
end;
end;
void __fastcall TFMForm::FormCreate(TObject *Sender)
{
int AddedIndex;
char DriveName[4] = "A:\\";
for (char Drive = "A"; Drive <= "Z"; Drive++) // すべての有効なドライブを試す
{
DriveName[0] = Drive;
switch (GetDriveType(DriveName))
{
case DRIVE_REMOVABLE:
DriveName[1] = "\0"; // ドライブを示す文字を一時的に文字列にする
AddedIndex = DriveList->Items->AddObject(DriveName,
Floppy->Picture->Graphic);
DriveName[1] = ":" // コロンを置き換える
break;
case DRIVE_FIXED:
DriveName[1] = "\0"; // ドライブを示す文字を一時的に文字列にする
AddedIndex = DriveList->Items->AddObject(DriveName,
Fixed->Picture->Graphic);
DriveName[1] = ":" // コロンを置き換える
break;
case DRIVE_REMOTE:
DriveName[1] = "\0"; // ドライブを示す文字を一時的に文字列にする
AddedIndex = DriveList->Items->AddObject(DriveName,
Network->Picture->Graphic);
DriveName[1] = ":" // コロンを置き換える
break;
}
if ((reinterpret_cast<int>(Drive - "A")) == getdisk()) // 現在のドライブかどうかをチェック
DriveList->ItemIndex = AddedIndex; // 現在のドライブのリスト項目を選択状態にする
}
}