AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

Ein Thema von neumimnemecky · begonnen am 18. Jul 2022 · letzter Beitrag vom 18. Jul 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

  Alt 18. Jul 2022, 10:10
Für Boolean (AutoSize/Centre/Stretch/Active) gibt es bereits einen fertigen Standard-PropertyEditor, welcher auch mit MultiSelection klar kommt.
siehe TCheckBox.Checked uvm.

Ebenso für Integer (Colours/BitmapHeigh/BitmapWidth).

Fazit: Für die gezeigten Property wäre garkein eigener Property-Editor nötig.




Runtime-Package:
* Requires:
* * RTL, VCL und was noch nötig ist
* rein kommt :
* * die Komponente (deine BITVIEW.PAS)

Design-Time-Package
* Requires:
* * das Runtime-Package (also hat man hier Zugriff auf alles in der BITVIEW.PAS)
* rein kommt:
* * die Design-Komponenten und so
* * RegisterComponent
* * der Property-Editor


Wird die Anwendung niemals mit Packages kompiliert, also niemals das Package verwendet, könnte mman auch alles in ein Package packen, da dann eh nur die PAS/DCU verwendet werden und das DesignZeugs nicht in der EXE landen würde, aber sowas macht man dennoch besser nicht. (nicht dass es raucht, wenn doch mal wer mit Packages kompiliert)



Bezüglich des Beispiels von Borland/Embarcadero,
da hätte ich gedacht, dass es bereits einen fertigen Property-Editor für Delphi-Referenz durchsuchenTFileName gäbe,
property FileName : TFileName read FFileName write FFileName;
aber TMediaPlayer.Filename hat einen Editor, aber TOpenDialog.Filename nicht. Also es gibt einen Editor, aber er hängt nicht nur am Typ, sondern auch an der Klasse
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jul 2022 um 10:29 Uhr)
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#2

AW: Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

  Alt 18. Jul 2022, 10:19
Runtime-Package:
Wird die Anwendung niemals mit Packages kompiliert, also niemals das Package verwendet, könnte mman auch alles in ein Package packen, da dann eh nur die PAS/DCU verwendet werden und das DesignZeugs nicht in der EXE landen würde, aber sowas macht man dennoch besser nicht. (nicht dass es raucht, wenn doch mal wer mit Packages kompiliert)

Und wie löst man diesen speziellen Code der Klassen-property-Deklaration für die Schreib- oder Lesemethode?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

  Alt 18. Jul 2022, 10:35
Es gibt hier keine DesignTime-Komponente und Runtime-Komponente.
Es ist die selbe Komponente.

Die DesignTime-Funktionen greifen auf die "richtige" Komponente zu.
Die Property werdem nicht nochmals deklariert, in keiner anderen Klasse.





TMixedComponent kommt ins Runtime-Package (MixedComponent)
und TMixedFileNameProperty kommt ins DesignTime-Package (MixedComponentReg).

Oder eben einfach billig so, wie es anfangs in dem Artikel aussieht ... also alles ins selbe Package/Unit.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jul 2022 um 10:39 Uhr)
  Mit Zitat antworten Zitat
neumimnemecky

Registriert seit: 21. Dez 2018
45 Beiträge
 
#4

AW: Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

  Alt 18. Jul 2022, 11:39
Es gibt hier keine DesignTime-Komponente und Runtime-Komponente.
Es ist die selbe Komponente.

Die DesignTime-Funktionen greifen auf die "richtige" Komponente zu.
Die Property werdem nicht nochmals deklariert, in keiner anderen Klasse.
Aber wie man so etwas deklariert (Split):
Code:
private
 procedure SetActive (Value : boolean);
public
property Active : boolean read FActive write SetActive default false;
Ich kann mir die Aufteilung hier nicht vorstellen.
Ich werde braten
Code:
 procedure SetActive (Value : boolean);
public
und
Ich erhalte eine Fehlermeldung, dass SetActive nicht deklariert ist.
Ich lösche die Active-Eigenschaft,
und ich werde das ganze Objekt stören.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wie teilt man diese Bibliothek in Entwurfszeit und Laufzeit auf?

  Alt 18. Jul 2022, 11:45
Das wird auch nicht aufgeteilt.
Es gehört alles zur Komponente. Also nicht ins DesignTime-Package.



Im PropertyEditor greift man "normal" garnicht direkt auf das Property/Getter/Setter/Objekt/Klasse zu, sondern nutzt die gegebenen Funktionen für den Zugriff auf das Property. (z.B. SetStrValue/SetStrValueAt/GetStrValue/GetStrValueAt ... intern via RTTI)
Alternativ bietet der PropertyEditor eine Methode an, um das Objekt zu bekommen und dann selber via RTTI oder mit einem Cast zu Typen und da kann man dann auch direkt mit dem Objekt arbeiten.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jul 2022 um 12:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz