Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Woher weiß Delphi, welcher Quelltext zu schreiben ist? (https://www.delphipraxis.net/177630-woher-weiss-delphi-welcher-quelltext-zu-schreiben-ist.html)

Nintendo 18. Nov 2013 07:17

Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
Hallo,

ich stelle mir grad die Frage, woher denn Delphi weiß, welcher Quelltext in die Form Unit zu schreiben ist. Wenn ich eine Komponente auf mein Formular setze, schreibt Delphi ja eine Zeile in mein Formular und setzt mir auch noch die nun benötigte Unit in die Uses-Klausel, falls die Unit noch nicht aufgeführt ist. Wenn ich eine Typbibliothek importiere, schreibt mir Delphi eine xxx_TLB Unit.

Wo ist das codiert? Welche Dokus sollte ich mir anschauen. Ich habe das Delphi-Developers-Guide und das Component-Writers-Guide und ich habe die Quelltexte der Tools-API von Turbo Delphi.

Geht Lazarus da den gleichen Weg? Kann ich die gewonnenen Erkenntnisse 1:1 in Lazarus anwenden? Wenn nicht, wo finde ich dann die passenden Dokus?

Daniel 18. Nov 2013 07:31

AW: Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
Moin,

bei Delphi ist das über einen sog. "TSelectionEditor" geregelt, der in Deinem Komponenten-Package lebt. Der wird immer dann aufgerufen, wenn eine Komponente auf das Form gesetzt wird und hat dann die Möglichkeit, der Delphi-IDE mitzuteilen, dass die Units A, B und C auch noch benötigt werden.

Wie das bei FreePascal gelöst ist, kann ich Dir nicht sagen.

Sir Rufo 18. Nov 2013 08:07

AW: Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
AFAIK wird der
Delphi-Quellcode:
uses
Abschnitt aus dem
Delphi-Quellcode:
interface
Teil der Komponente ausgewertet und die fehlenden units ergänzt.

Kann man schön bei FastReport, UniDAC, FireDAC etc. sehen. Die Komponenten für die Datenbanksysteme haben keine Eigenschaften und auch sonst keine Funktion und könnten problemlos nach dem ersten Speichern wieder entfernt werden. Die einzige Aufgabe ist es eben diese Units automatisch einbinden.

jaenicke 18. Nov 2013 08:49

AW: Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
In Lazarus ist dies meines Wissens nach wie so vieles andere im Moment gar nicht möglich. Einen Ersatz für TSelectionEditor habe ich zumindest nicht gefunden als ich ihn gebraucht hätte.

Nintendo 18. Nov 2013 12:26

AW: Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
Ok, so weit, danke erst mal für Eure Antworten. Hab schon mal in mein ComponentWriters Guide geschaut und auch in Google den Begriff "TSelectionEditor" eingegeben. Leider ist die Doku dort von Emba nicht besonders ergiebig. Was ich aber gesehen habe, sind Methoden wie:

- p ExecuteVerb
- p RequieresUnits
- f GetVerb: Int
- f GetVerbCount: Int

RequieresUnits schreibt dann also die Units in die Uses Klausel? Dann muss also der Komponentenentwickler dort die benötigten Units benennen. Da ergibt sich die Frage:

Wo ist TGetStrProc

definiert? Wie führe ich danach die benötigten Units dort auf. Das muss ich doch irgendeinem IDE Experten mitteilen, der dann die Units in die Uses Klausel übernimmt.

Liege ich richtig in der Annahme, das die Methode ExecuteVerb für andere Quelltextteile verantwortlich ist. Delphi schreibt mir ja auch Eventhandler, wenn ich im Objektinspektor ein Ereignis anklicke?

Ist das die ExecuteVerb-Methode, die dafür sorgt?

Außerdem wird im Formular die per Mausklick eingefügte Komponente in die Formulardefinition übernommen.

Nur Unit1 mit der Formulardefinition könnte per Template gelöst werden. Die Quelltextergänzungen während meiner Entwicklungsarbeit nicht mehr. Auch der Import von ActiveX Typbibliotheken erfordert Quelltexterzeugung abhängig vom aktuellen Objekt.

@jaenicke: Kann sein. Aber ich glaube, mich erinnern zu können, das auch Lazarus bei Fremdkomponenten die Uses Klausel passend ergänzt. Wenn dort aber TSelectionEditor nicht existiert, sgat mir das nur, das Lazarus dabei einen anderen Weg geht, dieses Ziel zu erreichen. Und auch Lazarus ergänzt den Quelltext, wenn ich im Objektinspektor ein Ereignis anklicke. Ich erhalte den leeren Eventhandler, wie in Delphi. Und wenn ich eine KOmponente aus der Palette auswähle, dann wird auch da die Formulardefinition passend ergänzt. Wenn hierzu bei Lazarus nicht dieselben Komponenten zuständig sind wie in Delphi, dann macht das Lazarus nur anders. Aber wie?

Gibt es außer ComponentWritersGuide und DelphiDevelopersGuide weiter führende Doku? Vor allem verständlicher als diese beiden genannten. In den beiden genannten Tutorials ist mir das alles zu stichpunktartig. Ich könnte ein gutes Beispiel gebrauchen.

Leider besitze ich FireDAC und FastReport nicht.

jaenicke 18. Nov 2013 13:18

AW: Woher weiß Delphi, welcher Quelltext zu schreiben ist?
 
Google spuckt mir z.B. das aus:
http://pastebin.com/qw1qV2PW


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 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