![]() |
Record in Komponente
Hi
Ich hab folgende Komponente + Record:
Delphi-Quellcode:
Wenn ich nun folgendes Versuche:
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;
Delphi-Quellcode:
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?
var test : TMeinKompo;
begin test := TMeinKompo.Create(Form1); test.ProzDesc.pdDraw := true; end; |
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.
|
Re: Record in Komponente
Argh, naja ok trotzdem danke! :cry:
|
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? |
Re: Record in Komponente
Zitat:
|
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 |
Re: Record in Komponente
Er meinte im OnCreate der Komponente... ;)
|
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:
Sodas der Record mit zb 10 und nicht mit 0 initialisiert ist? Oder hab ich da was falsch verstanden? :gruebel:
var myrecord : TProcessDescription;
begin myrecord.pdHeight //Ist zu diesem Zeitpunkt 0 end; |
Re: Record in Komponente
Hi.
Nimm eine Klasse, dann geht das... :wink: Bei Records gibts kein Create... |
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; |
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. |
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... |
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. |
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 19:24 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