Komponenten-Palette erweitern

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
Scurra
Beiträge: 29
Registriert: Mi 31. Dez 2014, 12:08

Komponenten-Palette erweitern

Beitrag von Scurra »

Hallo Leute,

ich habe vor etwa einer Woche angefangen, Delphi zu lernen und bin daher noch ein Neuling. Ich habe einen Kurs im Internet gefunden, den ich ganz gut finde (http://delphi.programmieren.vias.org/index.html). Nun bin ich aber an einem Punkt angekommen, bei dem die Komponenten-Palette um die sog. "SDL Component Suite" erweitert wird, indem man die Erweiterung herunterlädt und ganz einfach installiert.

Wie ich schon gelesen/selbst herausgefunden habe, ist das mit Lazarus aber nicht so einfach. Ich habe hier im Forum schon ein paar Beiträge darüber gelesen und auch im Lazarus wiki eine Anleitung gelesen, wie man neue Komponenten installiert (http://wiki.freepascal.org/Lazarus_Packages/de). Das konnte ich Schritt für Schritt verfolgen und ich habe es so geschafft, wie in dem Beispiel dort angegeben, einen Button für TBevel hinzuzufügen.

Wenn ich jedoch nicht nur einen Button, sondern eine ganze neue Sparte (wie Standard, Additional, Common Controls, etc.) hinzufüge, ist mir noch unklar. Hat jemand einen Link/eine Anleitung für mich, wie ich die Komponenten-Palette wie in dem oben genannten Tutorial erweitern kann?

Bisher habe ich schon die Datei "JEDI-SDLFULLSetup.exe" heruntergeladen und ausgeführt. Anschließend habe ich mit den Anleitungen, die ich im Internet gefunden habe, versucht, Komponenten zu Lazarus hinzuzufügen - leider ohne Erfolg. Ich wäre sehr dankbar, wenn mir jemand helfen könnte.

PS: Ich verwende Windows 7.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Komponenten-Palette erweitern

Beitrag von theo »

Scurra hat geschrieben:Wenn ich jedoch nicht nur einen Button, sondern eine ganze neue Sparte (wie Standard, Additional, Common Controls, etc.) hinzufüge, ist mir noch unklar. Hat jemand einen Link/eine Anleitung für mich, wie ich die Komponenten-Palette wie in dem oben genannten Tutorial erweitern kann?

Das wird ganz einfach durch den ersten Parameter "Page" bei RegisterComponents bestimmt:
http://lazarus-ccr.sourceforge.net/docs ... nents.html

http://wiki.freepascal.org/How_to_Write ... _Component

Scurra
Beiträge: 29
Registriert: Mi 31. Dez 2014, 12:08

Re: Komponenten-Palette erweitern

Beitrag von Scurra »

Danke für die schnelle Antwort.

Ich habe die Schritte, die im zweiten Link aufgelistet sind, abgearbeitet. Dabei bin ich davon ausgegangen, dass das Paket bereits im sdl-Ordner, den ich heruntergeladen und installiert habe, bereits vorhanden ist. Ich habe dann aus einem beliebigen Ordner des JEDI-sdl-Ordners gewählt, mir erschien der mit dem Namen sdl am naheliegendsten. Dort habe ich die Datei sdl.pas zu dem Package hinzugefügt. Wenn ich die Schritte in der Anleitung weiter befolge und am Ende das ganze kompilieren möchte, erscheint ein Fehler: Beim Erstellen des Packages (dem ich den Namen sdlPackage gegeben habe) wurde die Datei "sdlPackage.pas" erzeugt. Diese sieht wie folgt aus:

Code: Alles auswählen

{ This file was automatically created by Lazarus. Do not edit!
  This source is only used to compile and install the package.
 }

 
unit sdlPackage;
 
interface
 
uses
  sdl, LazarusPackageIntf;
 
implementation
 
procedure Register;
begin
  RegisterUnit('sdl', @sdl.Register);    // Hier taucht der Fehler auf
end;
 
initialization
  RegisterPackage('sdlPackage', @Register);
end.                                         

Der Fehler erscheint in der Zeile, die ich angegeben habe. Der Fehler lautet: Identifier not found "Register"

Muss ich noch etwas einbinden, um den Fehler zu beseitigen? Oder muss ich zuerst eine andere Datei zu dem Package hinzufügen?

lazarusjulian
Beiträge: 39
Registriert: Mi 6. Jan 2016, 21:45

Re: Komponenten-Palette erweitern

Beitrag von lazarusjulian »

Hallo Scurra,

der Fehler bedeutet, dass in der Unit sdl.pas keine Register-Prozedur gefunden wird.
Ob es jetzt klappt wenn du dort eine rein schreibst, weiß ich nicht. Man könnte es ja mal auf einen Versuch ankommen lassen.

z.B. so

Code: Alles auswählen

 
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('SDL Components', [TSDLComponent]);
end;
 

Antworten