Project Templates/de
│
Deutsch (de) │
English (en) │
русский (ru) │
Überblick
Du kannst anpassen, wie neue Projekte erstellt werden. Die IDE erlaubt Dir, deine eigenen Projekttypen zu registrieren. Dazu gibt es _designtime packages_. Das Paket *projtemplates* (es wird mit den Standard- Lazarus- Installations- Paketen mit installiert) erlaubt Dir, existierende Projekte einfach als Vorlagen zu verwenden.
Paket projtemplates
Das Paket implementiert Projektvorlagen und kommt mit den Lazarus- Quellen (components/projecttemplates/projtemplates.lpk).
Das Paket wird mit installiert mit den Installationspaketen von Lazarus (z.B. mit der Windows- Installation). Das Paket ergänzt im Dialog Datei->Neu eine Kategorie Projektvorlagen. Es ergänzt auch einen Menüeintrag Neues Projekt aus Vorlage im Menü Datei, ebenso, wie einen Menüeintrag Optionen für Projektvorlagen im Menü Werkzeuge. Dieser Menüpunkt ist nur sichtbar, wenn das Vorlagenverzeichnis existiert (siehe nächstes Kapitel) und mindestens ein Vorlagen- Unterverzeichnis enthält.
In den Optionen für Projektvorlagen kann ein Verzeichnis ausgewählt werden. Dieses Verzeichnis sollte ein Unterverzeichnis für jede Vorlage enthalten. Eine Vorlage besteht aus einer Sammlung von Dateien, die für das neue Projekt kopiert und von diesem benutzt werden.
Während des Kopiervorgangs werden in Datei- und Verzeichnis- Namen sowie dem Inhalt der Dateien Variablenersetzungen vorgenommen: __VARNAME__ wird ersetzt durch den Wert der Variabla VARNAME. Standardmäßig kennt die Engine 2 Variablen:
- ProjDir: Das Verzeichnis, in dem das neue Projekt erzeugt wird.
- ProjName: Der Name des neuen Projektes in ProjDir.
Zusätzliche Variablen müssen definiert werden in der Datei *project.ini* im Verzeichnis des Projektes. Diese Datei liegt im Windows- INI- Format vor. Die Sektion [Variables] wird nach Variablen- Namen durchsucht.
[Variables]
VarName1=Beschreibung 1[|Wert 1]
VarName2=Beschreibung 2[|Wert 2]
Die dort gefundenen Variablen werden mit ihrer Beschreibung im Dialog angezeigt und der Nutzer muss einen Wert für diese Variablen festlegen. Die Datei project.ini kann eine weitere Sektion namens project enthalten, welche einige Informationen über das Projekt enthalten kann. Die folgenden Schlüsselworte können dort gefunden werden:
ProjectFile
Der Name der Projektdatei (ohne Erweiterung) im Vorlagenverzeichnis. Jede Datei, deren Name (ohne Endung) damit übereinstimmt, wird gesondert behandelt. Sie wird umbenannt in den Projektnamen. ProjecFile=Beispiel wird Dateien, wie Beispiel.lpi, Beispiel.lpr und Beispiel.cfg so umbenennen, wie vom Nutzer vorgegeben. Standardmäßig wird der Wert von ProjectFile für als project übernommen. (Beachte, dass die .ini- Datei nicht kopiert wird)
ProjectFile ist nicht notwendig. Wenn nichts angegeben wird oder 'ProjectFile'.lpi nicht existiert, wird die erste *.lpi Datei im Vorlagenverzeichnis als ProjectFile eingesetzt.
Name
Name der Vorlage. Der Name und die Beschreibung wird angezeigt im Dialog Datei->Neu
Author
Autor der Vorlage
Description
Kurzbeschreibung des Projektes (einzeilig). Der Name und die Beschreibung werden im Dialog Datei->Neu angezeigt.
Recurse
Ein Boolean (1/0), welcher angibt, ob die Engine rekursiv durch Unterverzeichnisse gehen soll, oder nicht.
Exclude
eine durch Kommata getrennte Liste von Dateinamen- Erweiterungen, welche bei der Schlüsselwort- Ersetzung nicht berücksichtigt werden sollen
Vorgehen
Schritt 1: Erzeuge Dein eigenes Vorlagen- Verzeichnis (z.B. ~/.lazarus/meinevorlagen) und setze diesen Pfad in Lazarus (Menü Werkzeuge->Optionen für Projektvorlagen)
Schritt 2: Für alle Vorlagen- Funktionen und auch für das Erscheinen im Lazarus-Menü *Datei* musst Du mindestens eine Vorlage anlegen, welche auf Deinem vorhandenen normalen Projekt basieren kann. - Erzeuge ein Unterverzeichnis in Deinem Vorlagen- Verzeichnis (z.B. ~/.lazarus/meinevorlagen/meineerstevorlage) - Kopiere Deine Projektdateien in eben dieses Verzeichnis (*.lfm, *.pas, *.ico, *.lpi, *.lpr, *.res)
Schritt 3:
- Erzeuge eine Datei *project.ini* in dem neuen Vorlagenverzeichnis.
Das Minimum sollte in etwa so aussehen
[Variables]
[Project]
Name=Mein Fenster- Beispiel
Schritt 4: Starte Lazarus neu, damit Deine Änderungen übernommen werden
Optional: Das angenehme an Projektvorlagen ist, dass es Variablen unterstützt. Da Du Dein Projekt wahrscheinlich nicht genauso benennen wirst, wie Dein Vorlageprojekt, wirst Du vermutlich etwas am Code ändern und einige Dateien umbenennen wollen.
Dateien
Benenne die Projekt- Dateien (ico, lpi, lpr, res) um in __PROJNAME__._ext_ (wobei natürlich die originale Erweiterung anstelle von _ext_ verwendet werden muss). Beispielsweise project.lpi wird zu __PROJNAME__.lpi. Beachte: Auch der Inhalt der lpi- Datei benötigt einige Bereinigungen, beispielsweise müssten vielleicht historische Einträge oder Verweise auf Dateien entfernt werden, es ist unklar, ob die lpi- Datei überhaupt benötigt wird.
Dateiinhalt
Ändere für alle Dateien, in denen auf eine project.ext verwiesen wird, die entsprechenden Verweise auf __PROJNAME__, beispielsweise <Filename Value="project.lpr"> <Filename Value="__PROJNAME__.lpr">
Du kannst optional Deine eigenen Variablen definieren, beispielsweise kannst Du der *unit.pas* einen anderen Dateinamen geben. Du könntest beispielsweise __MAINUNIT__ und __MAINFORM__ in der Datei *project.ini* definieren als MAINUNIT und MAINFORM, während der Erzeugung des Lazarus- Projektes wirst Du gefragt nach den neuen Namen. Danach wird jedes Auftreten - beispielsweise von __MAINUNIT__ - ersetzt durch den Text, den Du bei der Anlage des neuen Projektes festgelegt hast (vermeide Sonder- und Leerzeichen)
Beachte, dass das fpr alle Variablen funktioniert. Jedes Auftreten von Variablen in Dateinamen und -inhalten wird ersetzt durch das, was Du bei der Erzeugung eines neuen Projektes festgelegt hast, das auf Deiner Vorlage beruht. Vordefinierte Vraiablen sind PROJNAME und PROJDIR, aber ich habe bislang keinen Zweck von PROJDIR erkennen können.
Beispiel
- project.ini*:
[Variables]
MAINUNIT=Dateinamen der Standard- Datei unit.pas
MAINFORM=Name des Formulars
[Project]
Name=Meine eigene Anwendung
Author=Hansaplast
Description=Lazarus LCL- Anwendung an meine eigenen Bedürfnisse angepasst
- __PROJNAME__.lpr*:
program __PROJNAME__;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, __MAINUNIT__;
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(T__MAINFORM__, __MAINFORM__);
Application.Run;
end.
- __MAINUNIT__.pas*:
unit __MAINUNIT__;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Buttons, StdCtrls, LCLIntf, LCLType, ComCtrls;
type
{ __MAINFORM__ }
T__MAINFORM__ = class(TForm)
...
procedure T__MAINFORM__.FormPaint(Sender: TObject);
...
//etc
</syntaxhighlight">
*__MAINUNIT__.lfm*:
<syntaxhighlight lang="pascal">
object __MAINFORM__: T__MAINFORM__
...
Behalte im Auge, dass diese kurze Anleitung dir lediglich beim Start helfen kann. Die angebotenen Variablen- Ersetzungs- Mechanismen können für viele verschiedene Zwecke eingesetzt werden, beispielsweise auch für Fenster- Titel, Copyright- Erklärungen, web- links auf Deinen Formularen und spezifische Objekte.