Delphi-PRAXiS

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 Record in Komponente (https://www.delphipraxis.net/44152-record-komponente.html)

LoL 14. Apr 2005 13:17


Record in Komponente
 
Hi

Ich hab folgende Komponente + Record:
Delphi-Quellcode:
type
  TProcessDescription = packed Record
    pdDraw : boolean;
    pdHeight : byte;
    pdColor : TColor;
    pdDrawBackground : boolean;
    pdFont : TFont;
  end;

  TMeinKompo = class(TPanel)
  private
    { Private declarations }
    FProzDesc : TProcessDescription;
    procedure SetProzDesc(Value : TProcessDescription);
  public
    { Public declarations }
    property ProzDesc : TProcessDescription read FProzDesc write SetProzDesc;
  end;
//...
procedure TMeinKompo.SetProzDesc(Value : TProcessDescription);
begin
  if not(CompareMem(@Value, @FProzDesc, sizeof(Value))) then
    FProzDesc := Value;
end;
Wenn ich nun folgendes Versuche:
Delphi-Quellcode:
var test : TMeinKompo;
begin
  test := TMeinKompo.Create(Form1);
  test.ProzDesc.pdDraw := true;
end;
Kommt das der Linken Seite nichts zugewiesen kann. Woran liegt das kann ich nicht direkt in den Record schreiben oder habe ich was falsch deklariert?

jim_raynor 14. Apr 2005 13:20

Re: Record in Komponente
 
Du kannst nicht direkt in einen Record schreiben, der ein Property ist. Kannst es nur über einen temporären Record lösen.

LoL 14. Apr 2005 13:22

Re: Record in Komponente
 
Argh, naja ok trotzdem danke! :cry:

LoL 14. Apr 2005 13:31

Re: Record in Komponente
 
Ach noch was dann dazu:
Kann ich meinen Record auch mit Vordefinierten Werten initialisieren, dh wenn man sich ne Instanz davon erstellt das Height zb. 10 ist oder so?

Airblader 14. Apr 2005 13:41

Re: Record in Komponente
 
Zitat:

Zitat von LoL
Ach noch was dann dazu:
Kann ich meinen Record auch mit Vordefinierten Werten initialisieren, dh wenn man sich ne Instanz davon erstellt das Height zb. 10 ist oder so?

Prozedur "OnCreate" :?: ;)

LoL 14. Apr 2005 13:50

Re: Record in Komponente
 
dann müsste ich den Record aber doch in eine Klasse packen oder?
Ich kann doch nicht proceduren in ein Record eintragen?
Oder ich stehe mal wieder auf dem Schlauch :wall:

PS: sagts mir wenn ich stuss schreibe

leddl 14. Apr 2005 13:53

Re: Record in Komponente
 
Er meinte im OnCreate der Komponente... ;)

LoL 14. Apr 2005 14:03

Re: Record in Komponente
 
Hä? jetzt bin ich ganz verwirrt :gruebel:

Was hat die Kompontente denn damit zu tun wenn ich mir einfach nur eine neue Instanz des Record mache:
Delphi-Quellcode:
var myrecord : TProcessDescription;
begin
  myrecord.pdHeight //Ist zu diesem Zeitpunkt 0
end;
Sodas der Record mit zb 10 und nicht mit 0 initialisiert ist? Oder hab ich da was falsch verstanden? :gruebel:

Waldteufel 14. Apr 2005 14:06

Re: Record in Komponente
 
Hi.

Nimm eine Klasse, dann geht das... :wink:

Bei Records gibts kein Create...

glkgereon 14. Apr 2005 14:41

Re: Record in Komponente
 
soweit ich weiss ist folgendes auch erlaubt:

Delphi-Quellcode:
TDings = record
  Di: Integer = 5;
  Del: String = 'abc';
  Dumm: Integer = 15000;
end;

LoL 14. Apr 2005 14:49

Re: Record in Komponente
 
Da verwechselst du was mit C da is es schön einfach! Das war ja der Grund warum ich gefragt habe :mrgreen:
Aber ich habs jetzt mit der Klasse geamcht.

leddl 14. Apr 2005 17:07

Re: Record in Komponente
 
Ich hatte das so verstanden, daß du beim Erstellen deiner Komponente den Record mit Standard-Daten füllen willst. :gruebel:
Dann kannst du doch einfach im OnCreate der Komponente die Werte schreiben...

Jens Schumann 14. Apr 2005 17:17

Re: Record in Komponente
 
Hallo,
einen Record als property habe ich noch nie gesehen. Wie soll das denn im OI aussehen? Schreibst Du Dir einen eigenen PropertyEditor? Verwende doch anstatt eines Records einen TPersistent Nachfahren.
Dann hast Du die Probleme nicht.

LoL 22. Apr 2005 08:46

Re: Record in Komponente
 
Also wie das im OI ausschaun soll weis ich auch nicht :zwinker:
Aber was meinst du mit TPersistent-Nachfahre? Was wie mach ich denn das?
Ich will das halt so ähnlich aufbauen wie bei der Eigenschaft "Font" das das halt so aufklappt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 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