AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TreeView hat kein Übergeordnetes Fenster (StringToComponent)

TreeView hat kein Übergeordnetes Fenster (StringToComponent)

Offene Frage von "v2afrank"
Ein Thema von Softchaos67 · begonnen am 23. Jul 2004 · letzter Beitrag vom 21. Sep 2020
 
Softchaos67

Registriert seit: 23. Jul 2004
39 Beiträge
 
Delphi 7 Enterprise
 
#1

TreeView hat kein Übergeordnetes Fenster (StringToComponent)

  Alt 23. Jul 2004, 09:24
Hallo,
ich versuche einen TreeView als String zu speichern. Habe dazu in der Delphi Hilfe die funktionen
Code:
function ComponentToString(Component: TComponent): string;
function StringToComponent(Value: string): TComponent;
gefunden.
ComponentToString funktioniert erwartungsgemäss.
Wenn ich aber versuche den TreeView wieder zu laden bekomme ich folgende FehlerMeldung:

Element TreeView1 hat kein übergeordnetes Fenster!

Die Exception wird in der funktion StringToComponent erzeugt
Result := BinStream.ReadComponent(nil);

Woran könnte das liegen?
Hier der Source
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
   Panel1 := TPanel.Create(Self);
   If OpenDialog1.Execute then begin
      memo1.Lines.LoadFromFile(OpenDialog1.FileName);
      Panel1 := TPanel(StringToComponent(memo1.Text));
   end;
   Panel1.Parent := Form2;
   Panel1.Visible := true;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
   TreeView1 :TTreeView;
begin
  TreeView1 := TTreeView.Create(Self);
  TreeView1.Parent := Panel2;

   If OpenDialog1.Execute then begin
      memo1.Lines.LoadFromFile(OpenDialog1.FileName);
      TreeView1 := TTreeView(StringToComponent(memo1.Text));
   end;
   TreeView1.Visible := false;
   TreeView1.Parent := Panel2;
   TreeView1.Visible := true;
end;
Mit dem Panel funktioniert das tadellos#
Hier noch die funktionen:
Delphi-Quellcode:
function ComponentToString(Component: TComponent): string;

var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
      BinStream.WriteComponent(Component);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Result:= StrStream.DataString;
    finally
      StrStream.Free;

    end;
  finally
    BinStream.Free
  end;
end;
//----------------------------------------------------------------------------------------------------------------------
function StringToComponent(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
      Result := BinStream.ReadComponent(nil);

    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;
//----------------------------------------------------------------------------------------------------------------------
initialization
   RegisterClass(TPanel);
   RegisterClass(TTreeView);
end.
danke für eure Hilfe!
irgendwie gehts.....
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:53 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