AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Untermenü in den Eigenschaften einer Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Untermenü in den Eigenschaften einer Komponente

Ein Thema von Beck93 · begonnen am 5. Apr 2013 · letzter Beitrag vom 5. Apr 2013
Antwort Antwort
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#1

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:10
Delphi-Quellcode:
type
 TAnschluss = (asTCP_IP, asLPT1, asLPT2, asLPT3, asCOM1, asCOM2, asCOM3);

 TCOMUnterklasse = class(TPersistent)
  public
   FBaudRate: CPort.TBaudRate;
   FDataBits: CPort.TDataBits;
   FStopBits: CPort.TStopBits;
   FParity: CPort.TComParity;

  published
   property BaudRate:CPort.TBaudRate read FBaudRate write FBaudRate;
   property DataBits: CPort.TDataBits read FDataBits write FDataBits;
   property StopBits: CPort.TStopBits read FStopBits write FStopBits;
   property Parity: CPort.TCOMParity read FParity write FParity;
 end;

type
  Tptw_AveryEtikettendruck = class(TComponent)
   IndyClient: TIdTCPClient;
   COM: TComPort;
  private
    { Private-Deklarationen }
   FUnterklasse: TCOMUnterklasse;
...
  published
    property COMEinstellungen: TCOMUnterklasse read FUnterklasse write FUnterklasse;

So sieht der Aufbau momentan aus.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:15
Auf den ersten Blick fällt mir da jetzt nichts Ungewöhnliches auf. Hab ich das richtig verstanden, das "+" ist zu sehen, lässt sich aber nicht aufklappen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#3

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:24
Ja "+" ist sichtbar aber leider keine Unterpunkte.

Im Anhang als Bild. Dort habe ich auf "+" gedrückt und nichts hat sich verendert bis auf das aus "+" "-" wurde.

Fals es interessant für den fall sein könnte:
Ich habe ebenso ein Menü mit Such funktion (wie Datei öffnen) in der Komponente. In Delphi 7 wird das angezeigt und funktioniert in Rad Studio XE nicht. Eine lösung habe ich aber auch leider noch nicht für das Problem.
Angehängte Grafiken
Dateityp: jpg Untermenue.jpg (39,1 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:30
So etwas hatte ich bislang noch nie Was passiert, wenn Du den Properties einmal Getter und Setter verpasst, ändert sich dann etwas?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#5

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:55
Danke nochmals für die Antworten.

bin gerade am versuchen, doch leider verstehe ich den letzten Code ausschnitt von sx2008 nicht. Egal was ich in die Klammern schreibe, es wird angemosert von Delphi.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 15:29
Ich denke, sx2008 liegt in dem Fall mal nicht ganz richtig...

In einem eigenen Edit habe ich das mal so gelöst (muss etwas basteln, da ich das mit include-Dateien realisiert hatte):

Delphi-Quellcode:
  TodEdit = class(TEdit)
  private
    FDataSet: TodDataSet;
    FOnAfterGetData: TNotifyEvent;
    FOnBeforeGetData: TNotifyEvent;
    function get_od: Tod;
    procedure set_od(const Value: Tod);
    function get_PropName: String;
    procedure set_PropName(const Value: String);
    function get_PropText: String;
    procedure set_PropText(const Value: String);
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property DataSet: TodDataSet read FDataSet;
    property OnAfterGetData: TNotifyEvent read FOnAfterGetData write FOnAfterGetData;
    property OnBeforeGetData: TNotifyEvent read FOnBeforeGetData write FOnBeforeGetData;
  end;

procedure Register;

implementation

uses
  Graphics, Controls, Themes, Windows, SysUtils;

procedure Register;
begin
  RegisterComponents('odControls', [TodEdit]);
end;

{ TodEdit }

constructor TodEdit.Create(AOwner: TComponent);
begin
  inherited;
  FDataSet := TodDataSet.Create(Self); // Instanz erstellen
  DataSet.SetSubComponent(True); // In der DFM speichern
end;

///////////////////////////////////

  TodDataSet = class(TComponent)
  private
...
  protected
...
  public
...
  published
    property PropName: String read get_PropName write set_PropName;
  end;
Ich hatte also die Unterkomponente von TComponent abgeleitet ohne diese irgendwie zu registrieren.
Hilft das vielleicht weiter?
SetSubComponent führt dann dazu, dass die Einstellungen in der DFM gespeichert werden.

Hast Du vielleicht vergessen, eine Instanz Deiner Unterkomponente zu erzeugen?
Vielleicht kommt auch der Objektinspektor nicht mit Deinen Typen (CPort.TBaudRate usw) zurecht?
Führe sonst mal testweise eine einfache Texteigenschaft o.ä. ein...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 5. Apr 2013 um 15:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Untermenü in den Eigenschaften einer Komponente

  Alt 5. Apr 2013, 13:28
Vorraussezungen für den Erfolg sind:
* die Unterklasse muss von TPersistent abgeleitet sein und die Mehode Assign überschreiben werden.
Vergisst man Assign zu überschreiben, dann erscheint die Fehlermeldung "Klasse XXX kann XXX nicht zugewiesen werden" (oder so ähnlich)
* das published Property muss read-write sein
Delphi-Quellcode:
  private
    procedure SetUnterklasse(Value:TCOMUnterklasse);
  published
    property COMEinstellungen: TCOMUnterklasse read FUnterklasse write SetUnterklasse;


procedure COM.SetUnterklasse(Value:TCOMUnterklasse);
begin
  FUnterklasse.Assign(Value);
end;
* die Unterklasse muss registriert werden, damit der Objektinspektor dessen Objekte dynamisch erzeugen kann
Delphi-Quellcode:
procedure Register;
begin
  Classes.RegisterComponents(...);
  RegisterClass(TCOMUnterklasse); // ***
end;
  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:22 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