Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Untermenü in den Eigenschaften einer Komponente (https://www.delphipraxis.net/174119-untermenue-den-eigenschaften-einer-komponente.html)

Beck93 5. Apr 2013 09:13

Untermenü in den Eigenschaften einer Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bin gerade meine erste Komponente am erstellen und bin soeben über ein Problem gestolpert.

Ich wollte gerne in den Eigenschaften ein Untermenü haben.So wie im Anhang auf dem Bild.
Leider habe ich keinen Anhaltspunkt wie ich das hinbekomme.

Also meine Frage:
Wie bekomme ich in den Eigenschaften meiner Komponente ein Untermenü erstellt?

Danke

DeddyH 5. Apr 2013 09:41

AW: Untermenü in den Eigenschaften einer Komponente
 
Das auf dem Bild dürfte vermutlich eine "Unterklasse" sein, die von der Komponente benutzt wird. Also etwas in der Art
Delphi-Quellcode:
type
  TUnterklasse = class(TPersistent)
  private
    FSomeField: SomeType;
    FSomeOtherField: SomeType;
    ...
  published
    ...
    property SomeField: SomeType read FSomeField write FSomeField;
    property SomeOtherField: SomeType read FSomeOtherField write FSomeOtherField;
  end;

  TDeinKomponente = class(TComponent)
  private
    FUnterklasse: TUnterklasse;
    ...
  published
    ...
    property Unterklasse: TUnterklasse read FUnterklasse;
  end;
Statt einer Klasse wäre aber auch ein Record denkbar.

Beck93 5. Apr 2013 12:47

AW: Untermenü in den Eigenschaften einer Komponente
 
Vielen Dank für die schnelle Antwort.

habe es jetzt einmal getestet.
Es sieht prinzipiell sehr gut aus nur wenn ich auf das "+" vor der Eigenschaft "Unterklasse"
drücke öffnen sich meine Eigenschaften der "Unterklasse" nicht.

Woran könnte das liegen?

DeddyH 5. Apr 2013 12:57

AW: Untermenü in den Eigenschaften einer Komponente
 
Wie sieht die Unterklasse denn aus?

Beck93 5. Apr 2013 13:10

AW: Untermenü in den Eigenschaften einer Komponente
 
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.

DeddyH 5. Apr 2013 13:15

AW: Untermenü in den Eigenschaften einer Komponente
 
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?

Beck93 5. Apr 2013 13:24

AW: Untermenü in den Eigenschaften einer Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

sx2008 5. Apr 2013 13:28

AW: Untermenü in den Eigenschaften einer Komponente
 
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;

DeddyH 5. Apr 2013 13:30

AW: Untermenü in den Eigenschaften einer Komponente
 
So etwas hatte ich bislang noch nie :gruebel: Was passiert, wenn Du den Properties einmal Getter und Setter verpasst, ändert sich dann etwas?

Beck93 5. Apr 2013 13:55

AW: Untermenü in den Eigenschaften einer Komponente
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Seite 1 von 2  1 2      

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