![]() |
ReadComponentResFile
Hallo zusammen,
ich benutze D7 und erhalte eine "Invalid Stream Format"-Fehlermeldung, wenn ich versuche, Form2 gem. nachfolgendem Code zu erstellen. Form2 wird in den Projektoptionen nicht automatisch erzeugt.
Delphi-Quellcode:
Unit2 sieht so aus:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var path: String; begin path:=ExtractFilePath(Paramstr(0)); Form2:=TForm2.CreateNew(Application); ReadComponentResFile(path+'unit2.dfm',Form2); Form2.Show; end; end.
Delphi-Quellcode:
Das Beispiel ist aus dem D6 Kochbuch und eigentlich 1:1 übernommen.
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation //{$R *.dfm} end. Gruß Igotcha |
Re: ReadComponentResFile
Möchtest du nur ein Formular dynamisch erstellen? Beziehungsweise ein Formular mehrmals öffnen? Dann nimm die Kommentare bei //{$R *.dfm} in Unit 2 weg und lass das mit dem ReadComponentResFile.
|
Re: ReadComponentResFile
Also wie man eine Form und diese auch dynamisch generiert weiß ich ;-)
Ich möchte aber, dass der User das Layout der Form (innerhalb bestimmter Grenzen) ändern kann. Dazu gehört z.B.
Ausserdem suche ich ja eine Antwort auf die Frage, warum da ein "Invalid Stream Format"-Fehler kommt. Gruß Igotcha |
Re: ReadComponentResFile
Mmmh. Auszug aus der Delphi-Hilfe:
Zitat:
Ich würde ehr vermuten, dass es irgendwie über TReader gemacht werden muss. Allerdings habe ich soetwas noch nie gemacht, sind also alles nur Denkansätze. |
Re: ReadComponentResFile
Wie gesagt, das ist ein Beispiel aus einem Buch und 1:1 übernommen. Allerdings war das Beispiel für D6.
|
Re: ReadComponentResFile
Hallo zusammen,
ich meine mich dunkel erinnern zu können, dass man in Delphi 6 auswählen konnte ob die Formulardateien als Resource oder als Text abgespeichert werden sollen. In Delphi 7 ist das Textformat aber Standard. Deshalb muss die Datei konvertiert werden um sie mit ReadComponentResFile einlesen zu können. Hier ein kurzes funktionierendes Beispiel (ganz quick and dirty).
Code:
procedure TForm1.Button1Click(Sender: TObject);
var path : string; InStream,OutStream : TMemoryStream; begin path:=ExtractFilePath(Paramstr(0)); Instream := TMemoryStream.Create; OutStream := TMemoryStream.Create; InStream.LoadFromFile(path+'unit2.dfm'); InStream.Position := 0; ObjectTextToResource(InStream, OutStream); OutStream.Position := 0; Form2:=TForm2.CreateNew(Application); OutStream.ReadComponentRes(Form2); InStream.Free; OutStream.Free; Form2.Show; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz