Was sind Frames?
In der Delphi-Hilfe ist zu lesen: "TFrame ist ein Container-Objekt für Steuerelemente. Es kann in Formulare oder andere Frame-Komponenten eingefügt werden."

Frames sind wie Formulare Container für andere Komponenten. Frames können in Formulare und andere Frame-Objekte eingefügt und zur einfachen Wiederverwendung in der Komponentenpalette gespeichert werden. Nachdem ein Frame erstellt und gespeichert wurde, kann die Komponente weiterhin als Unit verwendet werden und die Änderungen der eingefügten Komponenten (einschließlich anderer Frames) erben.

Vorteile von Frames?
Im Gegensatz zu Komponenten können Sie ganz einfach im Original-Frame bzw. in davon abgeleiteten Frames noch Änderungen vornehmen und zwar visuell. Außerdem sind Frames platzsparend, da sie die Dopplung von Ressourcen vermeiden. Sie sind voll objektorientiert und einfach zu handhaben.

Warum hat Delphi keine fertigten Frames?
Delphi liefert zwar eine Menge an Komponenten mit, aber keine Frames. Wenn Sie aber in einem neuen Projekt ein "Frames-Control" aus der Komponenten-Palette:

auf Ihr Formular ziehen wollen, kommt der Hinweis: "Keine Frames im Projekt. Um einen Frame zu erzeugen, wählen Sie Datei, Neuer Frame".

Haben Sie allerdings schon ein paar Frames in Ihrem Projekt, würde z.B. folgendes Fenster angezeigt:



Delphi erwartet also grundsätzlich, dass Sie die Frames, die Sie verwenden wollen, bereits in Ihrem Projekt eingebunden haben, was Sie über Menü "Projekt", mit dem Befehle "Dem Projekt hinzufügen" erledigen müssen.

Selbst wenn Sie Frames in die Komponentenpalette übernommen haben, gibt es noch Fälle, wo Sie vorher über den Weg "Dem Projekt hinzufügen", zunächst Dateien hinzufügen müssen, wollen Sie keine Fehler erhalten, die u.U. Ihre Frames zerstören. Und zwar dann, wenn Sie Frames einfügen, die von anderen Frames geerbt haben, dann müssen Sie zunächst die Vorgänger dem Projekt hinzufügen, da Delphi leider nicht eigenständig in den Verzeichnissen nachschaut, ob dort evtl. auch die Vorgänger-Frames liegen. Selbst entsprechende Einstellungen in den Verzeichniseinstellungen (Suchpfad bzw. Bibliothekpfad) bringen hier keine Abhilfe.

Aber damit haben wir hier auch schon den einzigen, wie ich finde geringfügigen Nachteil von Frames abgehandelt. Denn durch die Möglichkeit der Vererbung bieten die Frames ein mächtiges Werkzeug, um oft benötigte Programmteile schnell in das gerade bearbeitete Programm einzufügen und evtl. noch benötigte Änderungen vorzunehmen.

Warum Delphi keine Frames mitliefert? Aus meiner Sicht eine Marktlücke und leider auch ein Punkt, der das mächtige Werkzeug "Frames" erst mal für viele Anwender als ein Mysterium erscheinen lässt. Aber diese Seite hier macht sich zur Aufgabe, die Lücke zu schließen und Ihnen alle benötigten Infos über die Verwendung von Frames zu liefern.

Wie installiere ich Frames?
Um die hier erworbenen Frames zu installieren, gehen Sie wie folgt vor:

Entpacken Sie den Inhalt der gelieferte(n) Zip-Datei(en) in ein Verzeichnis Ihrer Wahl (z.B: "D:\Delphi10\Frames").

Achtung: Falls Sie Updates zuvor erworbener Frames installieren, bedenken Sie, dass alle zuvor mitgelieferten Frames überschrieben werden. Das ist der Grund, warum Sie nie an den gelieferten Frames selber Änderungen vornehmen sollten, sondern nur an Frames, die Sie von den gelieferten abgeleitet oder unter anderem Namen gespeichert haben.

Sie haben dann anschließend die Möglichkeit, die Frames bei Bedarf in der Komponentenpalette und/oder in der Objektablage einzubinden, was beides empfohlen wird, da es zum einen die weitere Arbeit mit den Frames erleichtert und ohne Umwege alle Möglichkeiten z.B. der Vererbung nutzbar macht.

Um die Frames in der Komponentenpalette zu installieren, gehen Sie wie folgt vor:

Delphi 5 - Delphi 7
1. Starten Sie Delphi, wählen dann Menü Datei, Alle schließen
2. Wählen Sie aus dem Menü "Komponente" den Befehl "Palette Konfigurieren"
3. Im dann angezeigten Dialog wählen Sie den Befehl "Hinzufügen" und dann den Seitennamen "HS-Frames" (für Hastasoft-Frames) und schließen dann wieder diesen Dialog.
4.  Im Menü "Datei benutzen" Sie den Befehl "Öffnen" und öffnen zunächst die Datei "FRAMEDrives.pas" aus dem Verzeichnis, in dem Sie zuvor die Frames installiert haben
5. Klicken Sie mit der rechten Maustaste auf den geöffneten Frame und wählen den Befehl "Zur Palette hinzufügen".
6. Im angezeigten Dialog ändern Sie "TFrame_DrivesTemplate" ab in "TFrame_Drives", als Palettenseite wählen Sie "HS-Frames", was Sie evtl. manuell eingeben müssen, falls Delphi Ihnen diesen Eintrag nicht anbietet. Ändern Sie dann noch das Paletten-Symbol, indem Sie auf den Schalter "Ändern" klicken und dann aus dem Installationsverzeichnis der Frames das entsprechend bezeichnete Bitmap-Symbol auswählen. Klicken Sie dann auf OK. Anschließend steht in der Tool-Palette unter der Kategorie "HS-Frames" der erste Frame zur Verfügung:


[TIPP: Anstatt nun mit Schritt 7 weiterzuverfahren, können Sie auch hier direkt den Frame zur Objektablage hinzufügen, siehe weiter unten, wie das geht]
7. Verfahren Sie dann in genau der folgenden Abfolge mit den anderen Frames fort, soweit Sie diese erworben haben:
FRAMEDir.pas, FRAMEFileBox.pas, FRAMEFileBoxExt1, FrameFileBoxExt2, FRAMEImage.pas. Die Reihenfolge ist bei den FileBox-Frames wichtig, da ab FileBoxExt1 Object-Erben vorliegen, daher müssen Delphi zunächst die Vorgänger bekannt sein.

Wie Sie die neuen Frames nun verwenden, dazu siehe weiter unten.


Delphi 2005 - Delphi 2007
1. Starten Sie Delphi, wählen dann Menü Datei, Alle schließen
2. Wählen Sie Menü Ansicht, Toolpalette
3. In der Toolpalette wählen Sie per rechtem Mausklick den Befehl "Neue Kategorie hinzufügen".
4. Wählen Sie hier "HS-Frames" (für die Hastasoft-Frames)
5. Im Menü Datei benutzen Sie den Befehl "Öffnen" und öffnen zunächst die Datei "FRAMEDrives.pas" aus dem Verzeichnis, in dem Sie zuvor die Frames installiert haben
6. Klicken Sie mit der rechten Maustaste auf den geöffneten Frame und wählen den Befehl "Zur Palette hinzufügen".
7. Im angezeigten Dialog ändern Sie "TFrame_DrivesTemplate" ab in "TFrame_Drives", als Palettenseite wählen Sie "HS-Frames", was Sie evtl. manuell eingeben müssen, falls Delphi Ihnen diesen Eintrag nicht anbietet. Ändern Sie dann noch das Paletten-Symbol, indem Sie auf den Schalter "Ändern" klicken und dann aus dem Installationsverzeichnis der Frames das entsprechend bezeichnete Bitmap-Symbol auswählen. Klicken Sie dann auf OK. Anschließend steht in der Tool-Palette unter der Kategorie "HS-Frames" der erste Frame zur Verfügung:

8. Verfahren Sie dann in genau der folgenden Abfolge mit den anderen Frames fort, soweit Sie diese erworben haben:
FRAMEDir.pas, FRAMEFileBox.pas, FRAMEFileBoxExt1, FrameFileBoxExt2, FRAMEImage.pas. Die Reihenfolge ist bei den FileBox-Frames wichtig, da ab FileBoxExt1 Object-Erben vorliegen, daher müssen Delphi zunächst die Vorgänger bekannt sein.

Um die Frames in der Objektablage zu installieren, gehen Sie wie folgt vor:

Delphi 5 - Delphi 7
1. Starten Sie Delphi, wählen dann Menü Datei, Alle schließen
2. Wählen Sie im Menü Datei den Befehl "Datei", "Neu", um die Objektablage anzuzeigen.
3. Dort klicken Sie mit der rechten Maustaste und wählen den Befehl "Eigenschaften"
4. Im dann angezeigten Dialog wählen Sie "Seite hinzufügen" und als Seitenname "HS-Frames"
5. Schließen Sie die Objektablage wieder
6. Im Menü Datei benutzen Sie den Befehl "Öffnen" und öffnen zunächst die Datei "FRAMEDrives.pas" aus dem Verzeichnis, in dem Sie zuvor die Frames installiert haben
7. Klicken Sie mit der rechten Maustaste auf den geöffneten Frame und wählen den Befehl "Der Objektablage hinzufügen".
8. Wählen Sie dort als Titel "Frame_Drives" und als Seite "HS-Frames", die restlichen Eingaben können Sie machen, brauch aber nicht. Sie sollten aber noch ein anderes Symbol aus dem Installationsverzeichnis der Frames wählen (Frame_Drives.ico).
9. Bestätigen Sie mit OK und ab sofort steht Ihnen der Frame über die Objektablage zur Verfügung (mit den Befehlen "Kopieren, Vererben, verwenden").

Delphi 2005-2007 (hier konkret für Delphi 2006 beschrieben)
1. Starten Sie Delphi, wählen dann Menü Datei, Alle schließen
2.  Im Menü Datei benutzen Sie den Befehl "Öffnen" und öffnen zunächst die Datei "FRAMEDrives.pas" aus dem Verzeichnis, in dem Sie zuvor die Frames installiert haben
3. Klicken Sie mit der rechten Maustaste auf den geöffneten Frame und wählen den Befehl "Der Objektablage hinzufügen".
[3a.] Wählen Sie beim ersten mal im angezeigten Dialog den Befehl "Neue Kategorie" und dann "HS-Frames" als Kategoriename
4. Anschließend wählen Sie als Titel "Frame_Drives" und als Kategorie "HS-Frames", die restlichen Eingaben können Sie machen, brauch aber nicht. Sie sollten aber noch ein anderes Symbol aus dem Installationsverzeichnis der Frames wählen (Frame_Drives.ico).
5. Bestätigen Sie mit OK und ab sofort - wenn Sie eine neue VCL-Anwendung anlegen oder eine bestehende öffnen - steht Ihnen der Frame über die Objektablage, Kategorie "HS-Frames" zur Verfügung (mit den Befehlen "Kopieren, Vererben, verwenden")


Wie verwende ich Frames?

Hier gibt es mehrere Methoden:

1. Einfügen eines Frames über das "Frame-Control" der Seite Standard:
- Über Menü Projekt, Dem Projekt hinzufügen, fügen Sie den benötigten Frame hinzu.
- Zeichnen Sie dann mit dem Frame-Control den Bereich ein, wo der Frame hin soll.
- Aus dem dann von Delphi angezeigten Dialog wählen Sie den Frame aus.

2. Einfügen eines Frames über die Komponentenpalette "HS-Frames"
- Wählen Sie die zuvor von Ihnen angelegte Komponenten Seite "HS-Frames" aus.
- Klicken Sie dort auf den benötigten Frame und zeichnen ihn auf Ihr Formular an der benötigten Stelle ein.


Frames Kopieren, vererben oder verwenden?

Wenn Sie die Frames in der Objekteinlage installiert haben, und Sie in einem Projekt dann aus der Objektablage einen Frame auswählen, steht Ihnen die Möglichkeiten "Kopieren, vererben oder verwenden zur Verfügung".

Kopieren
Diesen Befehl sollten Sie benutzen, wenn Sie den Frame in einer einmaligen Art verändern wollen, aber das Original nicht verändern wollen (was Sie nie tun sollten, da bei einer Installation von Updates die gelieferten Frames immer überschrieben werden). Sie speichern den kopierten Frame dann unter einem anderen Namen ab.

Verwenden
Dieser Befehl bietet sich an, um einen Frame schnell Ihrem Projekt hinzuzufügen, wenn Sie einen Nachfolger des Frames verwenden wollen aber zunächst dessen Vorfahr in das Projekt übernehmen müssen (alternativ würden Sie über Projekt, dem Projekt hinzufügen gehen müssen, mit der entsprechenden Verzeichnis und Dateiauswahl). Den hiermit eingefügten Vorfahrframe ändern Sie natürlich nicht.
[Info: Für eigene, von Ihnen erstellte Frames können Sie den Befehl verwenden nutzen, um Änderungen an Ihren Frames vorzunehmen.]

Vererben
Diesen Befehl nutzen Sie, wenn Sie die hier erworbenen Frames zu eigenen Zwecken fortentwickeln wollen, und dabei die Eigenschaften des Vorfahren im vollen Umfang übernehmen wollen. Sie können hier neue Eigenschaften hinzufügen, aber z.B. keine schon bestehenden Komponenten löschen (allerdings können Sie diese unsichtbar machen und im gewissen Umfang neu anordnen).

Problem "Vorfahr für TFrame_FileBox nicht gefunden" lösen
Fügen Sie einen Frame in ein Formular ein, der ein oder mehrere Vorfahren hat kommt eine Meldung "Fehler beim Erzeugen von Formular: Vorfahr für "FRAME_VorfahrName" nicht gefunden. Anschließend kommt evtl. auch noch der Fehler "Klasse für "FRAME_Name_des_Frames" nicht gefunden.

WICHTIG: Sie dürfen nun nicht einfach den Vorfahr einfügen, sondern Sie müssen, um weitere Probleme zu vermeiden, aus dem Menü Projekt den Befehl "Aus dem Projekt entfernen" den Frame entfernen, den Sie nicht korrekt einfügen konnten. Evtl. wird dieser Frame noch nicht mal in der Projektverwaltung angezeigt, er ist aber noch da und würde Probleme bereiten. Also erst entfernen und dann begonnen vom Ursprungsobjekt, dieses und evtl. weitere Nachfahren einfügen, die noch vor dem Frame sind, den Sie einfügen wollen.

Beispiel: Wenn Sie TFrame_FileBoxExt2 verwenden wollen, müssen Sie zuvor genau in der Reihenfolge die Frames "FrameFileBox" und "FrameFileBoxExt1" Ihrem Projekt hinzufügen. Anschließend können Sie dann FrameFileBoxExt2 z.B. mit Hilfe der Palettenseite in Ihr Formular einzeichnen.

Frames, welche keine Vorfahren besitzen, können direkt in das Formular eingezeichnet werden.

Wenn Sie einen Dialog verwenden, der Frames beinhaltet, müssen Sie zunächst auf diese Frames Ihrem Projekt hinzufügen, bevor Sie den Dialog verwenden können. Diese Dialoge können Sie übrigens nicht der Komponentenpalette hinzufügen, sondern nur der Objektablage. Mit Hilfe der Objektablage können Sie dann aber bei Bedarf Nachfolger des Dialogs erstellen (oder diesen einfach in Ihrem Projekt verwenden, was sich bei dem Dateiauswahl-Dialog besonders anbietet).