Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Neue Kompo mit eigenem Typ (https://www.delphipraxis.net/22810-neue-kompo-mit-eigenem-typ.html)

Nalincah 24. Mai 2004 12:48


Neue Kompo mit eigenem Typ
 
Ich hab ne Komponente geschrieben, die 2 Eigene Typen besitzt. Diese Typen besitzen Variablen die ich unter Private und Eigenschaften die ich als Property unter published deklariert habe.Nachdem ich die Komponenten installiert habe hab ich unter der neuen Eigenschaft auch das "+" gesehen, nur als ich drauf geklickt habe, wurden keine Unterpunkte angezeigt (Wie bei "Font"). Im Quelltext kann ich aber auf die Untereigenschafte zugreifen. Woran liegt das?

Hansa 24. Mai 2004 12:54

Re: Neue Kompo mit eigenem Typ
 
Liefer bitte mal etwas Source. Sonst wird dir kaum einer helfen können.

Nalincah 24. Mai 2004 12:55

Re: Neue Kompo mit eigenem Typ
 
Sorry. Hier:

Delphi-Quellcode:
unit uMP_Strasse;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls;

type
  TMieten = class(TPersistent)
  private
    FMiete:Integer;
    FMiete1Haus: Integer;
    FMiete2Haus: Integer;
    FMiete3Haus: Integer;
    FMiete4Haus: Integer;
    FMieteHotel: Integer;
  published
    property Miete: Integer read FMiete write FMiete;
    property Miete1Haus: Integer read FMiete1Haus write FMiete1Haus;
    property Miete2Haus: Integer read FMiete2Haus write FMiete2Haus;
    property Miete3Haus: Integer read FMiete3Haus write FMiete3Haus;
    property Miete4Haus: Integer read FMiete4Haus write FMiete4Haus;
    property MieteHotel: Integer read FMieteHotel write FMieteHotel;
  end;

  TStrassenWerte = class(TPersistent)
  private
    FStrassenName:String;
    FGrundstueckswert: Integer;
    FHauskosten: Integer;
    FHotelkosten: Integer;
    FMieten:TMieten;
  published
    property StrassenName: String read FStrassenName write FStrassenName;
    property Grundstueckswert: Integer read FGrundstueckswert write FGrundstueckswert;
    property Hauskosten: Integer read FHauskosten write FHauskosten;
    property Hotelkosten: Integer read FHotelkosten write FHotelkosten;
    property Mieten:TMieten read FMieten write FMieten;
  end;

  TMP_Strasse = class(TImage) private
    FStrassenWerte:TStrassenWerte;
  published
    property StrassenWerte: TStrassenWerte read FStrassenWerte write FStrassenWerte;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Monopoloy', [TMP_Strasse]);
end;

end.
Soll ein Monopoly-Klon werden *g*

Hansa 24. Mai 2004 13:16

Re: Neue Kompo mit eigenem Typ
 
Habe mal in einer Kompo von mir nachgeguckt. Versuche das mal abzukupfern :
Delphi-Quellcode:

  TlblEdit = class(TEdit)
  private
    FAlignment: TAlignment;
...
    procedure SetAlignment(Value: TAlignment);
  published
...
    property Alignment: TAlignment read FAlignment write SetAlignment;

procedure TlblEdit.SetAlignment (Value: TAlignment);
begin
  FAlignment := Value;
  RecreateWnd;
end;
Allerdings frage ich mich, wo du das + her haben willst. :gruebel: Das kommt normalerweise nur durch SetSubComponent (true);

Nalincah 24. Mai 2004 13:34

Re: Neue Kompo mit eigenem Typ
 
Genauso hab ich es doch. Und irgendwas mit SubComponents hab ich nirgends. Das ist der komplette Source

Hansa 24. Mai 2004 13:37

Re: Neue Kompo mit eigenem Typ
 
Zitat:

Zitat von General2004
Genauso hab ich es doch...

Eben nicht ! :mrgreen:

Nalincah 24. Mai 2004 13:45

Re: Neue Kompo mit eigenem Typ
 
Ok. Aber dein TAlignment hat keine Untereigenschaften

Jens Schumann 24. Mai 2004 13:59

Re: Neue Kompo mit eigenem Typ
 
Hallo bo,
wenn Du innerhalb einer Komponente oder einem Nachfahren von TPersistent ein
Objekt nutzen möchtest, musst Du dieses auf mit Create erzeugen und mit Free
wieder freigeben. D.h. Du muss in Deinen Objekten TStrassenWerte und TMP_Strasse jeweils den constructor und destructor überschreiben.

In Deinem Source kann ich das nicht finden.

Hansa 24. Mai 2004 14:00

Re: Neue Kompo mit eigenem Typ
 
Doch : links/rechtsbündig und zentriert.

Nalincah 24. Mai 2004 14:18

Re: Neue Kompo mit eigenem Typ
 
Mein neuer Code:

Delphi-Quellcode:
 TMP_Strasse = class(TImage) private
    FStrassenWerte:TStrassenWerte;
  public
    constructor Create(AOwner:TComponent);override;
    destructor Destroy;override;
  published
    property StrassenWerte: TStrassenWerte read FStrassenWerte write FStrassenWerte;
  end;
Delphi-Quellcode:
constructor TMP_Strasse.Create(AOwner:TComponent);
begin
  FStrassenWerte := TStrassenWerte.Create;
end;

destructor TMP_Strasse.Destroy;
begin
  FStrassenWerte.free;
end;
Da krieg ich beim öffnen des Projekts wo die Kompo schon drin ist:

Zitat:

Zugriffsverletztung bei Adresse 00000000. Lesen von Adresse 00000000. Fehler ignorieren und fortfahren...etc


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz