AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi readcomponent(ResFile) "heckt" Subkomponenten
Thema durchsuchen
Ansicht
Themen-Optionen

readcomponent(ResFile) "heckt" Subkomponenten

Ein Thema von DrUArn · begonnen am 6. Mär 2012 · letzter Beitrag vom 8. Mär 2012
 
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

readcomponent(ResFile) "heckt" Subkomponenten

  Alt 6. Mär 2012, 11:11
Hi, comm.,

habe ein Problem beim Schreiben/Lesen neuer Komponenten
Delphi-Quellcode:
 TTestpanel = class(Tpanel)
  private
    FcheckA: TCheckBox;
    Fted: TEdit;
    { private declarations }
  protected
    { protected declarations }
  public
    { public declarations }

  published
    { published declarations }
    property checkA: TCheckBox read FcheckA write Fchecka;
    property ted: TEdit read Fted write Fted;
    constructor create(AOWNER:tcomponent);override;
  end;

constructor TTestpanel.create(AOWNER: tcomponent);
begin
  inherited;
  FcheckA:=tcheckbox.Create(self);
  FcheckA.Caption:='A';
// FcheckA.name:='checkA';
  InsertControl(FcheckA);
  fchecka.SetSubComponent(true);
  fted:=TEdit.Create(Self);
  Fted.parent:=self;
// fted.name:='ted';
  Fted.Top:=25;
  Fted.SetSubComponent(true);
  AutoSize:=true;
end;


//....
RegisterClasses([TTestpanel]);
im Formular z.B. mit Buttons:

schreiben:
Delphi-Quellcode:
writeComponentResFile('d:\testpanel.tmp',testpanel1);
//oder auch:fstream.WriteComponent(testpanel1); (fstream:tfilestream)
FreeAndNil(testpanel1);
lesen:
Delphi-Quellcode:
testpanel1:=ttestpanel.create(self);
ReadComponentResFile('d:\testpanel.tmp',testpanel1);
//oder auch:fstream.readComponent(testpanel1);
//oder ohne testpanel1:=ttestpanel.create(self): testpanel1:=
// ReadComponentResFile('d:\testpanel.tmp',NIL);
//bzw. tespanel1:= fstream.readComponent(NIL);


InsertControl(Testpanel1);
Die Probleme:

1. gebe ich den Subkomponenten in ttestpanel.create einen namen,
kommt beim Lesen die Fehlermeldung: "Komponente mit der Bezeichnung 'Name' existiert bereits!"

2. bei namenlosen Subkomponenten erhöht sich die Anzahl der im Panel vorhanden Subkomponenten um 1 - d.h. nach dem ersten schreiben/lesen gibt es zwei tedit's und 2 tcheckboxes usw..


Das liegt daran, daß beim Lesen ttestpanel.create aufgerufen wird - damit auch die beiden Subkompontenten erzeugt werden und dann noch einmal eingelesen werden - haben Sie Namen, geht's schief, haben sie keinen Namen, 'vermehren' sie sich!

Wo liegt der Fehler - eigentlich will ich meine neue Komponente nur speichern und wieder einlesen?!

Die verschiedenen Varianten des Einlesens haben das gleiche, unerwünschte Ergebnis.

Bin gespannt!

MfG Uwe

Geändert von DrUArn ( 6. Mär 2012 um 12:29 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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