AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Komponenten in TurboDelphi (Win32) verwenden
Tutorial durchsuchen
Ansicht
Themen-Optionen

Komponenten in TurboDelphi (Win32) verwenden

Ein Tutorial von Balu der Bär · begonnen am 9. Sep 2006 · letzter Beitrag vom 10. Mär 2011
Antwort Antwort
Seite 1 von 3  1 23      
Balu der Bär
Komponenten in TurboDelphi (Win32) installieren / verwenden


Seit ein paar Tagen stellt Borland bzw. DeveloperToolsGroup(DTG) bereits TurboDelphi zum Download bereit, und so wie die Server die ersten Tage ausgelastet waren, denke ich mal haben bereits einige Leute TurboDelphi in Benutzung. Das wohl größte Manko der kostenlosen TurboDelphi-Version ist aber, dass man keine Third-Party-Komponenten oder andere Packages installieren (bzw. in die IDE integrieren) kann. Für Neueinsteiger in die Welt der Komponenten und deren Verwendung soll dieses kleine Tutorial dienen.

In diesem Tutorial verwende ich zur Veranschaulichung die Komponente TScrollingCredits, welche man im Anhang findet und herunterladen kann.

Möglichkeit 1: Komponenten non-visuell benutzen

Generell können wir also keine Komponenten in die IDE integrieren (üblicherweise) und damit arbeiten. Aber wen stört das schon? Immerhin können wir die Komponenten immernoch zur Laufzeit des Programmes erzeugen, d.h. wir binden sie einfach direkt per Quelltext ein.

1. Die meisten Komponenten (oder jedenfalls recht viele) liegen in direkter Quelltextform vor, dass heißt als *.pas-Datei. So auch in unserem Beispiel TScrollingCredits. Entpackt das Archiv und kopiert die Unit credits.pas in das TurboDelphi-Bibliotheksverzeichnis (standardmäßig X:\Programe\Borland\BDS\4.0\lib) oder erstellt in den Delphi-Optionen einen neuen Bibliothekspfad zu dem Ordner, in dem die Unit (*.pas) liegt. Diesen Pfad erstellt man folgendermaßen: Hauptmenüpunkt "Tools" => "Optionen" => Unterpunkt "Bibliothek - Win32". An dieser Stelle ist das Hinzufügen einen neuen Bibliothekspfades möglich. Soviel zur externen Arbeit.

2. Als nächstes starten wir TurboDelphi und legen als erstes ein neues VCL-Formularprojekt an. Jetzt weiß Delphi natürlich noch nicht in welcher Unit unsere Komponente liegt, d.h. wir müssen die Unit zuerst einmal in die uses-Liste unseres Formulares aufnehmen. Wenn ihr meine Schritte parallel verfolgt, sollte der Projektquelltext jetzt ungefähr so aussehen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Credits (* unsere Unit *);
3. Jede Komponente ist lediglich eine Instanz einer Klasse, in unserem Fall heißt unsere Klasse TScrollingCredits, welche in der bereits erwähnten Unit credits.pas zu finden ist. Also müssen wir - wenn wir eine neue Komponente erzeugen wollen - eine Instanz von der Klasse TScrollingCredits ableiten. Dazu wechseln wir am besten in das Codefenster von unserem Hauptformular. Um eine neue Komponente abzuleiten behandeln wir sie einfach wie jedes andere Objekt oder Variable auch, in dem wir sie erstmal deklarieren. Die Komponente deklarieren wir am besten im private- oder public-Abschnitt des Formulares. Ungefähr so sollte euer Code jetzt aussehen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
   MeineCredits : TScrollingCredits; //Komponentenname und von welchem Typ sie abgeleitet wird (Klasse)
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
4. Erst jetzt beginnt die eigentliche Arbeit für Delphi, indem wir die Komponente nun erstellen lassen. Dazu besitzt jede Komponente die Methode .Create, welche wir lediglich aufrufen müssen. Dabei muss beachtet werden, dass wir nicht die Methode .Create unserer Komponente MeineCredits aufrufen können, sondern die .Create Methode der Klasse TScrollingCredits, da MeineCredits zu diesem Zeitpunkt noch keine Methoden hat bzw. MeineCredits ja noch gar nicht vorhanden ist, da wir es ja erst jetzt erzeugen wollen. Eventuell erwartet manche Komponente als Parameter einen Typen AOwner als Übergabewert. Dies ist in diesem eher kurz ausgelegten Tutorial nicht großartig von Bedeutung, ich selbst nehme meistens self, jede andere von TComponent abgeleitete Geschichte ist hier aber möglich.
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
 MeineCredits := TScrollingCredits.Create(self); //Komponente wird erstellt
end;
5. Kompilieren und erzeugen wir nun unser Projekt sehen wir jedoch noch nichts, d.h. dass Form ist immernoch leer - von der eben erzeugten Komponente keine Spur. Dies liegt daran das Delphi mit der Komponente noch gar nichts anfangen kann, da wir noch gar keine Werte / Einstellungen getätigt haben. Woher soll Delphi wissen auf welches Objekt und an welche Position es die Komponente legen soll? Das klären wir ganz Quick & Dirty hier:
Delphi-Quellcode:
with MeineCredits do
  begin
    Parent := Self; //Die Komponente braucht ein Elternelement, auf welchem die Komponente abgelegt wird
    Height := 100; //Setze Höhe, Breite, Position von oben & Position von links der Komponente
    Width := 200;
    Top := 20;
    Left := 20;
  end;
6. Wenn wir jetzt das Projekt kompilieren und erzeugen sind wir am Ziel, die Komponente liegt brav auf den Form und verrichtet ihren Dienst. Natürlich sind weitere Einstellungen jederzeit per Quelltext möglich, Optionen können getätigt werden und alles sollte so sein wie normal im Designer. Everything is possible, fällt mir da spontan ein. Alles in allem könnte man also sagen wir haben lediglich den Objektinspektor gegen den Codeeditor eingetauscht. Hier nochmal der gesamte Quelltext des Projektes, für die, die zu faul zum Schreiben oder Lesen sind.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Credits;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
   MeineCredits : TScrollingCredits; //Komponentenname und von welchem Typ sie abgeleitet wird (Klasse)
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  MeineCredits := TScrollingCredits.Create(self);
  with MeineCredits do
  begin
    Parent := Self;
    Height := 100;
    Width := 200;
    Top := 20;
    Left := 20;
  end;
end;

end.
Ich hoffe dieses Tutorials ist halbwegs nützlich für euch; da es mein erstes Delphi-Tutorial ist, bitte ich um etwas Nachsicht.

04.10.2006: Änderungen vorgenommen
Angehängte Dateien
Dateityp: rar tscrollingcredits_253.rar (4,3 KB, 79x aufgerufen)
 
Balu der Bär
 
#2
  Alt 9. Sep 2006, 11:10
Da das gestern ein bisschen "Quick & Dirty" war habe ich jetzt nochmal die überarbeitere Version (des zensierten) Tutorials hier hereingestellt.
  Mit Zitat antworten Zitat
scout01

 
Turbo Delphi für Win32
 
#3
  Alt 4. Okt 2006, 01:07
moin,

jetzt einmal für dumme bitte.

Kann ich das auch auf die Indy´s anwenden?

Ich wollte ein Programm das ich irgendwann mal angefangen habe zuende schreiben und das natürlich auch gleich in Turbo-Delphi.
Dafür brauche ich die IdHTTP. Wenn ich einfach nur die IdHTTP.pas in mein Projekt mit rein lade fehlen dem noch tausend andere Units. Ich denke mal das mein Ansatz ehh volkommen Falsch ist. Gibts da evt. nen einfachen Tip?
Bleibt nur noch zu sagen das ich blutiger anfänger bin und mich für die Frage schonmal im vorhinein entschuldige.

schonmal danke

scout01
  Mit Zitat antworten Zitat
Go2EITS

 
Delphi 7 Personal
 
#4
  Alt 4. Okt 2006, 07:19
@scout01
Das Problem löst Du, indem Du unter Optionen des Compilers den Suchpfad zu den fehlenden Dateien legst. Anders wird es nicht gehen, außer Du legst die fehlenden Dateien in Dein Projektpfad.(Das ist da, wo Du gerade Dein Programm bearbeitest. Ist aber bei der Menge der Dateien, die Du kopieren müsstest, nicht zu empfehlen.)
CU!
Go2EITS
  Mit Zitat antworten Zitat
Balu der Bär
 
#5
  Alt 4. Okt 2006, 08:28
Zitat von scout01:
Kann ich das auch auf die Indy´s anwenden?
Jupp na klar. Du hast ja die Indys sicherlich schon heruntergeladen. Jetzt kopierst du alle Units (*.pas) einfach in den Ordner X:\Programe\Borland\BDS\4.0\lib. Naja, und dann geht einfach so:
Delphi-Quellcode:
uses
 idHTTP;

...

var
 HTTP : idHTTP;
begin
 HTTP := TidHTTP.Create(nil);
 HTTP.Get(URL, data); //Beispiel
end;
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 11 Alexandria
 
#6
  Alt 4. Okt 2006, 08:33
Zitat:
Jupp na klar. Du hast ja die Indys sicherlich schon heruntergeladen. Jetzt kopierst du alle Units (*.pas) einfach in den Ordner X:\Programe\Borland\BDS\4.0\lib.
Noch besser wäre es in einen eigenen Pfad zu speichern und diesen dann in den Suchpfad der IDE aufzunehmen.
Markus Kinzler
  Mit Zitat antworten Zitat
Balu der Bär
 
#7
  Alt 4. Okt 2006, 08:36
Ich merk gerade, ist auch nicht erforderlich. Bei der TD-Installation wurdest du doch gefragt welche Indy-Version installiert werden soll, oder? Dementsprechend sollten die Units auch bereits im lib/Indy9 (oder Indy10) Ordner liegen.
  Mit Zitat antworten Zitat
Ralf23

 
Turbo Delphi für Win32
 
#8
  Alt 4. Okt 2006, 11:38
Hallo,

ich habe Turbo Explorer Delphi für Win32 gesaugt und (auf Win XP SP2) installiert. Danach Hotfix-Rollup installiert. Dann den 2. Teil vom Tutorial exakt so probiert. Beim installieren des Package warf die IDE die Meldung "Das Laden von Drittkomponenten und IDE-Addins ist bei dieser Version nicht lizensiert." Habe dann Turbo deinstalliert und neu installiert, dieses Mal ohne Hotfix-Rollup. Tutorial erneut probiert. Gleiches Ergebnis.

Entweder ihr habt andere Versionen oder das Hotfix-Rollup hat es unmöglich/schwerer gemacht.
  Mit Zitat antworten Zitat
DevilsCamp
 
#9
  Alt 4. Okt 2006, 11:57
Zitat von Ralf23:
Hallo,
Entweder ihr habt andere Versionen oder das Hotfix-Rollup hat es unmöglich/schwerer gemacht.
Sowohl als auch.
Borland hat ursprünglich eine Version zum DL freigegeben, bei der das installieren von Dritt-Komponenten noch möglich war, diese dann aber gegen eine Version ausgetauscht, bei der es nicht mehr möglich war. Bei den anderen Versionen wurde diese Möglichkeit mit dem Hotfix-Rollup ebenfalls deaktiviert.
  Mit Zitat antworten Zitat
CG2003

 
Delphi 2009 Professional
 
#10
  Alt 4. Okt 2006, 11:58
Zitat von Ralf23:
Entweder ihr habt andere Versionen oder das Hotfix-Rollup hat es unmöglich/schwerer gemacht.
Richtig, seit dem Hotfix-Rollup ist es NICHT mehr Möglich, Drittkomponenten zur Design-Time einzubinden.
Sebastian M.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz