Zitat von
Stefanotis:
Nun würdew ich (aus Kostengründen) gerne auf Turbo Delühi umsteigen und habe auhc schon den Turbo Delphi Explorer installiert. Nur eine Frage stellt sich mir: Wie kriege ich die PowerPDF Komponenten da hinein?!
Hi,
die Frage muss man in zwei Teilen beantworten:
- Für Turbo Delphi Explorer - Gar nicht
- Für Turbo Delphi (wie auch immer ohne Explorer) - Wie unter Delphi 2006 auch
Dazu kannst Du einfach mal nach
Turbo Delphi suchen. Da gab es Diskussionen zu den Einschränkungen, als bekannt wurde, dass CodeGear eine freie Version plant (und die Turbo Serie wiederbelebt). Eine Einschränkung haben die kostenlosen Versionen nämlich und die liegt in der
IDE Integration von Komponenten. Alles andere ist (soweit ich mich korrekt erinner) erlaubt! (insbesondere also auch die Entwicklung kommerzieller Produkte).
Das Du die PowerPDF-Komponenten nicht in die
IDE integrieren kannst heißt dabei aber nicht, dass Du diese nicht verwenden kannst. Die Arbeit gestaltet sich allerdings etwas umständlich als Du es vielleicht gewöhnt bist (der Aufwand hält sich aber auch in Grenzen!). Jedenfalls reicht es auch, wenn Du die Units (.pas oder .dcu Dateien) einfach in einen Ordner im Suchpfad platzierst (bzw. in den Suchpfad aufnimmst).
Hast Du dies getan, kannst Du einfach auf die Komponenten zugreifen, indem Du die entsprechende
Unit in die Uses-Klausel einbindest. Willst Du nun mit einer Komponente arbeiten, so musst Du diese nun von Hand instanziieren und initialisieren. Da ich die Komponente PowerPDF nicht näher kenne, erläuter ich es einfach an einem fiktiven Beispiel.
Sagen wir Du platzierst normalerweise eine TPowerPdf-Komponente auf dem Formular. Hier stellst Du im Objekt-Inspektor die Eigenschaft
PageFormat auf
pfA4 um (standardmässig pfUsLetter).
Wenn Du dies tust, übernimmt Delphi ein paar Dinge für Dich, die Du nun selbst machen musst.
Da wäre zu aller erst mal das einbinden der
Unit. Dazu kannst Du einfach in der Hilfe nachschauen (oder gucken, welche
Unit Delphi 2006 aut. einbindet, wenn Du die Komponente platzierst).
Diese
Unit fügst Du der Uses-Klausel hinzu.
Als nächstes brauchst Du eine Variable. Ist die Komponente für eine Instanz global, so erstellst Du sie einfach im private Bereich der Klasse (den Zugriff von außen solltest Du kapseln, deswegen private!). Dazu legst Du einfach wie gewohnt hier eine Variable vom Typ TPowerPdf an.
Nun muss die Komponente noch instanziiert und initialisiert werden, bevor sie verwendet werden kann. Dazu nutzt Du einfach das OnCreate-Event des Formulars. Hier erzeugst Du einfach ein neues Exemplar und setzt alle Eigenschaften (die Du sonst im
OI gesetzt hättest).
Wichtig ist noch, dass Du Dich auch um die Freigabe kümmern solltest. Ist die TPowerPdf-Komponente vom Typ TComponent, so kannst Du dem Konstruktor einen Owner übergeben, der sich selbst um die Freigabe kümmert (z.B. das Formular). Gibt es keinen Owner, der im Konstruktor übergeben wird, so musst Du die Instanz mittels Free selbst frei geben (am Besten im OnDestroy-Event des Formulars).
Ganz analog würdest ohnehin vorgehen müssen, wenn Du diese Komponente in einer Klasse (ohne Formular) verwendest.
Einen wichtigen Punkt gibt es noch. Handelt es sich um eine nicht-visuelle Komponente (also so etwas wie die Dialoge), dann bist Du hier schon fertig. Verwendest Du aber eine zu Laufzeit sichtbare Komponente (wie eine Anzeige eines Pdfs), dann musst Du dem Formular noch sagen, dass es diese Komponente anzeigen soll. Dazu bietet jedes Control (sichtbare Komponente) die Eigenschaft insertControl, der Du einfach die Instanz der anzuzeigenden Komponente übergibst.
Gibst Du die Komponente selbst frei (nur nötig, wenn Du keinen Owner übergibst) und zeigst sie an, dann musst Du sie vor der Freigabe des übergeordneten Controls von dort entfernen und freigeben.
Gruß Der Unwisssende