AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten Properties Events

Ein Thema von Thomas Feichtner · begonnen am 15. Okt 2018 · letzter Beitrag vom 16. Okt 2018
Antwort Antwort
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#1

Komponenten Properties Events

  Alt 15. Okt 2018, 15:20
Hallo,

bin gerade dabei meine eigene Komponente zu entwickeln (Ableitung von z.B. TEdit). Dabei möchte ich meine Eigenschaften und Ereignisse kapseln (so wie bei DevExpress). Dazu habe ich mir eine Klasse TTestEditProperties gemacht mit einer Eigenschaft bzw. Ereigniss.
Wenn ich nun diese Klasse in mein Edit einbinde, sehe ich Objektinspektor das Ereignisse nicht, die Eigenschaft jedoch schon.
Woran könnte das liegen.
Bei den DevExpress-Komponenten konnte ich auch keinen entscheidenden Hinweis finden.




Delphi-Quellcode:
unit TestEditUnit;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls, Vcl.StdCtrls;

type

  TTestEditProperties = class(TPersistent)
  private
    FTestEingenschaft: string;
    FOnTestEreigniss: TNotifyEvent;
  public
  published
    property TestEingenschaft: string read FTestEingenschaft write FTestEingenschaft;
    property OnTestEreigniss: TNotifyEvent read FOnTestEreigniss write FOnTestEreigniss;
  end;

  TTestEdit = class(TEdit)
  private
    FSwfEditProperties: TTestEditProperties;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
    property TestEditProperties: TTestEditProperties read FSwfEditProperties write FSwfEditProperties;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Test', [TTestEdit]);
end;

{ TTestEdit }

constructor TTestEdit.Create(AOwner: TComponent);
begin
  inherited;
  FSwfEditProperties := TTestEditProperties.Create;
end;

destructor TTestEdit.Destroy;
begin
  FreeAndNil(FSwfEditProperties);
  inherited;
end;

end.
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 15:22
Wenn ich nun diese Klasse in mein Edit einbinde, sehe ich Objektinspektor das Ereignisse nicht,
Auch nicht auf der Ereignisse-Seite?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 15:31
Nein,
leider nicht.

(Wollte ein Bild anhängen, jedoch sagte er jedes mal, dass er diese Grafikformat (bmp, png, jpg) nicht unterstützt.)
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 15:36
(Wollte ein Bild anhängen, jedoch sagte er jedes mal, dass er diese Grafikformat (bmp, png, jpg) nicht unterstützt.)
Da gibt es Größenbeschränkungen.

Kannst du mal ein simples Projekt für das Designtime-Package anhängen, bei dem das Problem auftritt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 15:44
(Wollte ein Bild anhängen, jedoch sagte er jedes mal, dass er diese Grafikformat (bmp, png, jpg) nicht unterstützt.)
Da gibt es Größenbeschränkungen.
Da wäre ich darunter geblieben. Ist ja egal.

Kannst du mal ein simples Projekt für das Designtime-Package anhängen, bei dem das Problem auftritt?
Hier bitte
Angehängte Dateien
Dateityp: zip TestPackage.zip (4,2 KB, 4x aufgerufen)
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 16:39
Offenbar funktionieren bei nested Properties die Events nicht von Haus aus. DevExpress registriert dafür extra ein eigenes Property PropertiesEvents und einen dazu passenden Property Editor TcxEditPropertiesEventEditor, der das implementiert. Sowas müsstest du dann auch machen.

Ehrlich gesagt, ich würde das auf die althergebrachte Methode erledigen und die separate Eigenschaftsklasse weglassen. Es ist halt immer etwas aufwändiger, wenn man gegen das originale Design-Konzept programmiert. Persönlich gefällt mir diese Kapselung auch nicht wirklich, aber das ist sicher Geschmackssache. Vielleicht gibt es in deinem Fall ja auch gute Gründe für dieses Design.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 17:03
Sollte es nich reichen die TTestEditProperties auch zu registrieren?
z.B: RegisterNoIcon([TTestEditProperties]);
Bin leider nicht an einem Delphi Rechner kann es nicht testen
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: Komponenten Properties Events

  Alt 15. Okt 2018, 18:08
Sollte es nich reichen die TTestEditProperties auch zu registrieren?
Nein, TTestEditProperties ist nicht von TComponent abgeleitet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Komponenten Properties Events

  Alt 16. Okt 2018, 08:51
Offenbar funktionieren bei nested Properties die Events nicht von Haus aus. DevExpress registriert dafür extra ein eigenes Property PropertiesEvents und einen dazu passenden Property Editor TcxEditPropertiesEventEditor, der das implementiert. Sowas müsstest du dann auch machen.
Danke für den Tipp.
So habe ich es nun auch gemacht. Und wie es aussieht funktioniert es.
mfg

Thomas Feichtner
  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 17:44 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