Grafiken zu einer Stringliste hinzufügen
Nach oben zu Mit Steuerelementen arbeiten - Index
Nachdem Sie Ihrer Anwendung Grafiken hinzugefügt haben, können Sie diese den Strings einer Stringliste zuordnen. Die Grafikobjekte können entweder zusammen mit den Strings eingefügt oder vorhandenen Strings zugeordnet werden. Wenn alle benötigten Daten verfügbar sind, sollten Objekte und Strings immer gemeinsam bearbeitet werden.
Das folgende Beispiel zeigt, wie Grafiken in eine Stringliste eingefügt werden. Der Quelltext ist Teil einer Dateiverwaltung, in der neben den Laufwerksbuchstaben Bitmaps für den Typ des Laufwerks angezeigt werden. Die Ereignisbehandlungsroutine für OnCreate sieht folgendermaßen aus:
procedure TFMForm.FormCreate(Sender: TObject);
var
Drive: Char;
AddedIndex: Integer;
begin
for Drive := 'A' to 'Z' do { alle möglichen Laufwerke durchlaufen }
begin
case GetDriveType(Drive + ':/') of { positive Werte bedeuten gültige Laufwerke }
DRIVE_REMOVABLE: { Register hinzufügen }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Floppy.Picture.Graphic);
DRIVE_FIXED: { Register hinzufügen }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Fixed.Picture.Graphic);
DRIVE_REMOTE: { Register hinzufügen }
AddedIndex := DriveTabSet.Tabs.AddObject(Drive, Network.Picture.Graphic);
end;
if UpCase(Drive) = UpCase(DirectoryOutline.Drive) then { aktuelles Laufwerk? }
DriveTabSet.TabIndex := AddedIndex; { zum aktuellen Register machen }
end;
end;
void __fastcall TFMForm::FormCreate(TObject *Sender) {
int AddedIndex;
char DriveName[4] = "A:\\";
for (char Drive = "A"; Drive <= "Z"; Drive++) // alle möglichen Laufwerke versuchen
{
DriveName[0] = Drive;
switch (GetDriveType(DriveName)) {
case DRIVE_REMOVABLE: // einen Listeneintrag hinzufügen
DriveName[1] = "\0"; // Laufwerksbuchstaben temporär in String speichern
AddedIndex = DriveList->Items->AddObject(DriveName,
Floppy->Picture->Graphic);
DriveName[1] = ":" // Doppelpunkt ersetzen
break;
case DRIVE_FIXED: // einen Listeneintrag hinzufügen
DriveName[1] = "\0"; // Laufwerksbuchstaben temporär in String speichern
AddedIndex = DriveList->Items->AddObject(DriveName,
Fixed->Picture->Graphic);
DriveName[1] = ":" // Doppelpunkt ersetzen
break;
case DRIVE_REMOTE: // einen Listeneintrag hinzufügen
DriveName[1] = "\0"; // Laufwerksbuchstaben temporär in String speichern
AddedIndex = DriveList->Items->AddObject(DriveName,
Network->Picture->Graphic);
DriveName[1] = ":" // Doppelpunkt ersetzen
break;
}
if ((int)(Drive - 'A') == getdisk()) // aktuelles Laufwerk?
DriveList->ItemIndex = AddedIndex;
// zum aktuellen Listeneintrag machen
}
}