AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Eigene Komponente-Objektinspektor

Ein Thema von LokutusvB · begonnen am 20. Jun 2016 · letzter Beitrag vom 23. Jun 2016
Antwort Antwort
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#1

AW: Eigene Komponente-Objektinspektor

  Alt 21. Jun 2016, 07:22
Ich muß gestehen himitsu, damit habe ich mich noch nicht beschäftigt. Der Owner im constructor ist TComponent. Mit SetSubComponent habe ich noch nie wissentlich gearbeitet. Da muß ich erst mal nachlesen, was genau das bewirkt. Gleiches gilt für deinen Tipp.

PS:
Ich habe es nun so gelöst. So sollte es in Ordnung sein. Wärend der Programmausführung wird nur Visible verändert, im Designer wird das Bild geladen oder gelöscht.
Delphi-Quellcode:
if val then begin
  PFState := cbChecked;
  if csDesigning in ComponentState
    then CheckImg.Picture.Bitmap.LoadFromResourceName(HInstance,'BMPCHECK');
end else begin
   PFState := cbUnchecked;
   if csDesigning in ComponentState then CheckImg.Picture.Bitmap := nil;
end;
CheckImg.Visible := val;
CheckImg.Invalidate;
MFG
LokutusvB

Geändert von LokutusvB (21. Jun 2016 um 10:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eigene Komponente-Objektinspektor

  Alt 21. Jun 2016, 11:03
Grundsätzlich gibt es zwei Vorgehen:

1. Man erstellt zwei getrennte Komponenten, die gleich heißen oder einen gleichnamigen Alias besitzen.
Eine Runtime-Komponente und noch eine Designtimekomponente mit gleichem Namen/Alias.
Das ist vorallem dan ganz praktisch, wenn die Komponente sich im Formdesigner komplett anders verhält, wie zur Laufzeit,
bzw. wo man den Laufzeitcode komplett aus der IDE raus halten will und dort nur einen Dummy für die Property haben möchte.

2. Man kann z.B. mit csDesigning DesignTime-Code, bzw. Runtime-Code jeweils (de)aktivieren.

2.5. Man ignoriert einfach alles und läßt sie Komponente überall gleich reagieren, bzw. man leitet ab, verwendet das Verhalten der bestehenden Komponente und beim eigenen Code ist es egal wo er läuft.

Mit SetSubComponent kann man vorallem das Verhalten steuern, wenn in einem öffentlichen Property eine "interne" Komponente sichtbar ist und man dort will, dass dessen (Unter)Property gespeichert werden.
Zusätzlich kann man selber "virtuelle" Property speichern. (siehe z.B. Left und Top bei den nichtvisuellen Komponenten ala TTimer, welche eigentlich keine solchen Property besitzen)

Wer der Owner ist, also die Form/Fram oder jemand Anders/Niemand, dass endscheidet auch, über das (automatische) Speichern der Komponente/Property.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Eigene Komponente-Objektinspektor

  Alt 22. Jun 2016, 14:26
Danke für die Informationen.

Ich habe nun die fertige Komponente in Delphi installiert. Nun habe ich das folgende Problem und keine Lösung dafür.

Sobald ich die Komponente in einem Projekt benutze, wird nun auch das Symbol der Komponente aus der DRC-Datei als Programmsymbol genutzt. Selbst wenn ich die Komponente wieder aus dem projekt entferne und das Sysmbol der Anwendung neu zuweise, bleibt das Programmsymbol das Symbol der Komponente. Hier hat nur das Laden einer älteren Sicherung geholfen.

Wo könnte hierfür die Ursache liegen?
MFG
LokutusvB
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eigene Komponente-Objektinspektor

  Alt 22. Jun 2016, 14:31
Die Unit ist noch in Uses drin, also werden auch die Ressourcen dieser Unit mit eingebungen.
Unit weg => Icon weg

Wir sieht die DCR aus?
Vermutlich denkt Windows, dein Icon wäre das ProgrammIcon, weil dessen Name/ID ungünstig ist, bzw. weil Windows zuerst in den Ressourcen auf dein Icon stößt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Eigene Komponente-Objektinspektor

  Alt 23. Jun 2016, 06:42
Hm, das ist aber bisher bei anderen selbst erstellten Komponenten nicht so gewesen.

Im Anhang lade ich die DCR hoch.


PS:
An der DCR liegt es nicht, auch ohne DCR erscheint das Icon, das wird wohl aus der RES-Datei gezogen.

PS1:
Manchmal hilft schon, rabüer zu "sprechen". Ich hatte in der RES-Datei aus Testgründen neben dem Bitmap noch ein Icon reingestellt. Dieses Icon hat es die ganze Zeit gezogen. Aber eigentlich sollte das doch auch nicht passieren, oder?
Angehängte Dateien
Dateityp: zip btnCheck.zip (351 Bytes, 2x aufgerufen)
MFG
LokutusvB

Geändert von LokutusvB (23. Jun 2016 um 07:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#6

AW: Eigene Komponente-Objektinspektor

  Alt 23. Jun 2016, 07:43
Wie heißt die Klasse denn aktuell?

Wichtig ist eigentlich nur, dass der Klassenname mit einem großen T beginnt (sonst wurde es sporadisch nicht gefunden) und das Bild in der Ressource genau so heißt. So sieht zum Beispiel bei mir ein entsprechende Ressourcenskript aus:
Code:
TButtonEx BITMAP "ButtonEx.bmp"
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Eigene Komponente-Objektinspektor

  Alt 23. Jun 2016, 08:22
Dann lag es am fehlenden großen T, der Klassenname hat mit einem kleinen t begonnen. Das habe ich ausgebessert. Danke dir!
MFG
LokutusvB
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:29 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