Avatar billede nico26 Nybegynder
09. august 2001 - 04:46 Der er 3 kommentarer og
1 løsning

TCollection som fakeprop

Jeg har forgæves forsøgt at gemme en collection ved at definere min egen property, fordi den ikke skal være tilgængelig udadtil. Det går også fint når Delphi gemmer - hvis man viser formen som text ser det ud som om det er en published property. Problemet opstår når formen loades, hvor der kommer en fejl der siger \"invalid property value\". Håber der er en der kan hjælpe mig. På forhånd tak :)


TTest = class(TComponent)
private
  FMyColl: TMyCollection;
  procedure ReadColl(Reader: TReader);
  procedure WriteColl(Writer: TWriter);
protected
  procedure DefineProperties(Filer: TFiler); override;
  ...
end;

procedure TTest.ReadColl(Reader: TReader);
begin
  Reader.ReadCollection(FMyColl);
end;

procedure TTest.WriteColl(Writer: TWriter);
begin
  Writer.WriteCollection(FMyColl);
end;

procedure TTest.DefineProperties(Filer: TFiler);
begin
  inherited DefineProperties(Filer);
  Filer.DefineProperty(\'MyColl\', ReadColl, WriteColl, FMyColl.Count > 0);
end;
Avatar billede delphi Nybegynder
10. august 2001 - 08:55 #1
Det er ikke noget banalt noget som at din property ikke er blevet created?  (Selv om jeg i såfald havde forventet en Access Error).

Peter
Avatar billede nico26 Nybegynder
11. august 2001 - 03:03 #2
nope - som jeg skrev ser dfm-filen god nok ud. Tricket virker i øvrigt fint hvis propertien er en streng eller integer.
Avatar billede nico26 Nybegynder
13. august 2001 - 20:47 #3
Jeg fandt selv ud af det. WriteCollection skriver vaCollection før den skriver selve Collectionen - derfor skal man bare kalde TReaders Readvalue metode før man kalder ReadCollection

procedure TTest.ReadColl(Reader: TReader);
begin
  Reader.ReadValue;
  Reader.ReadCollection(FMyColl);
end;
Avatar billede nico26 Nybegynder
08. maj 2006 - 14:28 #4
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester