[gelöst] Lazarus Componente erstellen
- juelin
- Beiträge: 260
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
[gelöst] Lazarus Componente erstellen
Hallo,
ich möchte eine eigene Lazarus-Komponete erstellen.
Die Komponete TScore habe ich erstellt und läuft in meinem Programm (siehe Anhang).
Nun wollte ich auch ein Icon in Lazarus-Komponenten für meine Komponente haben.
Dazu bin ich vorgegangen wie in "https://wiki.freepascal.org/How_To_Writ ... _Component" beschrieben.
1. erstelle ich ein neues Package und speichere in meinem Ordner package.
2. Ich erstelle eine neue Komponente mit Type TLabel, Class TScore, Palette Standard und Unit Score.pas mit Icon
3. Ich compeliere das Package
4. ich installiere das Package.
Wenn ich das so mache funktioniert auch alles.
Blos habe ich dann ein Package ohne meine Anforderungen.
Wenn ich also zwischen Schritt 2 und Schritt 3 meine Änderungen aus Score.pas (Anhang) einfüge
dann Compeliert das Packge ohne Fehler und auch die Installation klappt.
Aber wenn Lazarus dann neu startet bricht es nahc einer Weile wieder ab (kommt nicht richtig hoch).
Habe keine Ahnung warum.
Hat da jemand ein Tipp für mich???
Danke und Gruß
Jürgen
ich möchte eine eigene Lazarus-Komponete erstellen.
Die Komponete TScore habe ich erstellt und läuft in meinem Programm (siehe Anhang).
Nun wollte ich auch ein Icon in Lazarus-Komponenten für meine Komponente haben.
Dazu bin ich vorgegangen wie in "https://wiki.freepascal.org/How_To_Writ ... _Component" beschrieben.
1. erstelle ich ein neues Package und speichere in meinem Ordner package.
2. Ich erstelle eine neue Komponente mit Type TLabel, Class TScore, Palette Standard und Unit Score.pas mit Icon
3. Ich compeliere das Package
4. ich installiere das Package.
Wenn ich das so mache funktioniert auch alles.
Blos habe ich dann ein Package ohne meine Anforderungen.
Wenn ich also zwischen Schritt 2 und Schritt 3 meine Änderungen aus Score.pas (Anhang) einfüge
dann Compeliert das Packge ohne Fehler und auch die Installation klappt.
Aber wenn Lazarus dann neu startet bricht es nahc einer Weile wieder ab (kommt nicht richtig hoch).
Habe keine Ahnung warum.
Hat da jemand ein Tipp für mich???
Danke und Gruß
Jürgen
- Dateianhänge
-
Komponente.zip
- (4.98 MiB) 35-mal heruntergeladen
Zuletzt geändert von juelin am Di 25. Feb 2025, 21:27, insgesamt 1-mal geändert.
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Lazarus Componente erstellen
Hallo juelin,
ich kann in deinem Anhang keine Komponente finden.
Mach mal folgendes:
Package
Neues Package
gib einen neuen Namen ein oder lass NewPackage.lpk drin
speichere es in einem leeren Ordner ab
Es sollte nun ein Fenster wie dieses zu sehen sein: Hier auf Hinzufügen
Neue Komponente
Es öffnrt sich dieser Dialog: Zuerst angeben von was du ableiten möchtest
Dann der Name deiner Komponente
Der Reiter in dem die Komponente erscheinen soll (Neuer Name = Neue Lasche)
Das Verzeichnis so lassen wie es ist
Bei den Icons reinklicken und auswählen
Dann Neue Komponente erzeugen
Der Dialog schließt sich.
Jetzt in dem vorherigen Fenster auf Verwenden und installieren.
Lazarus wird neu kompilliert.
Nach dem Neustart befindet sich deine eben erzeugte Komponente in dem Reiter den du angegeben hast.
Viele Grüße
Bernd
ich kann in deinem Anhang keine Komponente finden.
Mach mal folgendes:
Package
Neues Package
gib einen neuen Namen ein oder lass NewPackage.lpk drin
speichere es in einem leeren Ordner ab
Es sollte nun ein Fenster wie dieses zu sehen sein: Hier auf Hinzufügen
Neue Komponente
Es öffnrt sich dieser Dialog: Zuerst angeben von was du ableiten möchtest
Dann der Name deiner Komponente
Der Reiter in dem die Komponente erscheinen soll (Neuer Name = Neue Lasche)
Das Verzeichnis so lassen wie es ist
Bei den Icons reinklicken und auswählen
Dann Neue Komponente erzeugen
Der Dialog schließt sich.
Jetzt in dem vorherigen Fenster auf Verwenden und installieren.
Lazarus wird neu kompilliert.
Nach dem Neustart befindet sich deine eben erzeugte Komponente in dem Reiter den du angegeben hast.
Viele Grüße
Bernd
- juelin
- Beiträge: 260
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: Lazarus Componente erstellen
Hallo wernnerer,
sieh im Anhang das File score.pas.
Gruß
Jürgen
sieh im Anhang das File score.pas.
Gruß
Jürgen
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Lazarus Componente erstellen
Hallo,
dir fehlt da aber die "procedure Register". Wenn du es so machst wie von mir beschrieben dann hast du die automatisch drin.
Viele Grüße
Bernd
dir fehlt da aber die "procedure Register". Wenn du es so machst wie von mir beschrieben dann hast du die automatisch drin.
Viele Grüße
Bernd
-
- Beiträge: 6926
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Lazarus Componente erstellen
Ich vermute, er meint "TScore".Hallo juelin,
ich kann in deinem Anhang keine Komponente finden.
Dies hatte ich früher auch gemacht, aber unterdessen mache ich dies nicht mehr, ich lade eigenes Zeugs dynamidch rein, so wie es gegenwärtig bei dir ist.ich möchte eine eigene Lazarus-Komponete erstellen.
Die Komponete TScore habe ich erstellt und läuft in meinem Programm (siehe Anhang).
Wen man eigens Komponenten in die IDE integriert, kommt es spätestens zu Fehlern, sobald man Lazarus neu installiert, oder wen man die Sourcen weiter gibt. Man muss dann imer schön darauf achten, das man alles schön brav installiert, bis die Source wieder läuft. Beim dynamischen Laden reicht es, wen man Zugriff zu der Unit mit der Komponente hat.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Lazarus Componente erstellen
Und wie bekommst du dann ein Icon in einen Reiter von Lazarus?
- juelin
- Beiträge: 260
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: Lazarus Componente erstellen
also procedure Register wird in dem PAS-File, das beim erstellen neue Komponete erzeugt wird angelegt.
In meinem programm (Anhang) brauche ich ja Register nicht.
Beim alnegen neue Komponente kann man auch das Picture für das Icon laden.
Gruß
Jürgen
In meinem programm (Anhang) brauche ich ja Register nicht.
Beim alnegen neue Komponente kann man auch das Picture für das Icon laden.
Gruß
Jürgen
- juelin
- Beiträge: 260
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: Lazarus Componente erstellen
nochmal zur Verdeutlichung.
Wenn ich mit folgenden Code in Score.pas installiere funktioniert es.
Wenn ich aber mit folgenden Code in Score.pas installiere funktioniert Lazarus nicht mehr.
Gruß
Jürgen
Wenn ich mit folgenden Code in Score.pas installiere funktioniert es.
Code: Alles auswählen
unit Score.pas;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TScore = class(TLabel)
private
protected
public
published
end;
procedure Register;
implementation
procedure Register;
begin
{$I score.pas_icon.lrs}
RegisterComponents('Standard',[TScore]);
end;
end.
Code: Alles auswählen
unit Score.pas;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TScore = class(TLabel)
private
EOnChange: TNotifyEvent; // Das Event OnChange
Vname: string; // Variable Vorname
Stand: integer; // Variable Anzahl Punkte im Score
Standalt: integer; // Variable letzter Stand von Variable Stand
procedure SetOnChange(AValue: TNotifyEvent); // Laden Event in FOnChange
protected
public
constructor Create(AOwner: TComponent; Besitzer: TForm; Vorname: string); reintroduce; // ertellen Komponente TScore
destructor Destroy; override; // zerstören Komponente TScore
procedure erhoehen(Wert: integer); // erhöht den Wert von Stand um Wert
Property OnChange:TNotifyEvent read EOnChange write SetOnChange; // Das Ereignis OnChange
function getName: string; // gibt den Vornamen zurück
function getStand: integer; // gibt den Stand zurück
published
end;
procedure Register;
implementation
constructor TScore.Create(AOwner: TComponent; Besitzer: TForm; Vorname: string);
begin
inherited Create(AOwner);
Parent:=Besitzer;
Alignment:=taCenter;
Autosize:=False;
Color:=clNavy;
Font.Color:=clYellow;
Font.Name:='Arial Black';
Font.Size:=16;
Font.Style:=[fsBold];
Height:=32;
Left:=10;
Top:=100;
Transparent:=False;
Visible:=True;
Width:=962;
Vname:=Vorname;
Stand:=0;
Standalt:=0;
end;
destructor TScore.Destroy;
begin
inherited Destroy;
end;
procedure TScore.SetOnChange(AValue: TNotifyEvent);
begin
if EOnChange=AValue then Exit;
EOnChange:=AValue;
end;
procedure TScore.erhoehen(Wert: integer);
begin
Stand:=Stand+Wert;
if Stand <> Standalt then
begin
If Assigned(EOnChange) Then EOnChange(Self); // Event auslösen
Standalt:=Stand;
end;
end;
function TScore.getName: string;
begin
Result:=Vname;
end;
function TScore.getStand: integer;
begin
Result:=Stand;
end;
procedure Register;
begin
{$I score.pas_icon.lrs}
RegisterComponents('Standard',[TScore]);
end;
end.
Jürgen
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Lazarus Componente erstellen
Hallo,
also ich hab es eben mal bei mir getestet und die Komponente neu erstellt. Bei mir erstellt es eine neue Lasche mit aExample, dort drin ist TScore. Wenn du es testen willst
Package
Package datei (lpk) öffnen
Im Anhang zur lpk navigieren und installieren.
Viele Grüße
Bernd
also ich hab es eben mal bei mir getestet und die Komponente neu erstellt. Bei mir erstellt es eine neue Lasche mit aExample, dort drin ist TScore. Wenn du es testen willst
Package
Package datei (lpk) öffnen
Im Anhang zur lpk navigieren und installieren.
Viele Grüße
Bernd
- Dateianhänge
-
Temporär.zip
- (18.21 KiB) 51-mal heruntergeladen
Zuletzt geändert von wennerer am Mi 26. Feb 2025, 08:40, insgesamt 1-mal geändert.
- juelin
- Beiträge: 260
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: Lazarus Componente erstellen
Hallo Bernd,
danke.
Jetzt hat es geklappt.
Weiss zwar noch nicht warum bei mir nicht.
Habe gefunden in meinem lpk-file zu viel am Anfang 2 mal '<PathDelim Value="\"/>'.
Hast du ne Ahnung warum?
Viele Grüße
Jürgen
danke.
Jetzt hat es geklappt.
Weiss zwar noch nicht warum bei mir nicht.
Habe gefunden in meinem lpk-file zu viel am Anfang 2 mal '<PathDelim Value="\"/>'.
Hast du ne Ahnung warum?
Viele Grüße
Jürgen
Zuletzt geändert von juelin am Di 25. Feb 2025, 22:10, insgesamt 1-mal geändert.
-
- Beiträge: 609
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: [gelöst] Lazarus Componente erstellen
Hallo Jürgen,
freut mich wenn es geklappt hat. Aber das Erstellen ist manchmal etwas knifflig. Passiert mir auch manchmal das ich es nochmal lösche und von Vorne anfange
Warum in der lpk was fehlt weiß ich leider nicht. Vielleicht kann einer der Profis was dazu sagen.
Viele Grüße
Bernd
freut mich wenn es geklappt hat. Aber das Erstellen ist manchmal etwas knifflig. Passiert mir auch manchmal das ich es nochmal lösche und von Vorne anfange

Warum in der lpk was fehlt weiß ich leider nicht. Vielleicht kann einer der Profis was dazu sagen.
Viele Grüße
Bernd