Hallo,
ich schaue mir gerade einen Quellcode an.
Ziel des Codes ist es, eine
DFM-Datei (genauer einen Teil) zu laden und in einem Formular anzuzeigen.
Die Datei sieht wie folgt aus.
object Scrollbox1: TScrollBox
Left = 0
Top = 0
Width = 769
Height = 519
VertScrollBar.Range = 515
Align = alLeft
AutoScroll = False
TabOrder = 1
ExplicitHeight = 470
object Button1: TButton
Left = 0
Top = 0
Width = 732
Height = 515
OnClick = Button1Click
end
end
Und hier ein Teil des Codes.
Delphi-Quellcode:
Procedure StringToComponent(AOwner, AParent: TComponent; Value: string;
OnClass: TFindComponentClassEvent; prog: TReadComponentsProc;
ReadError: TReaderError; SetName: TSetNameEvent);
var BinStream, StrStream:TMemoryStream;
Writer: TWriter;
Begin
if Length(Value)> 0 then
Begin
BinStream:= TMemoryStream.Create;
StrStream:= TMemoryStream.Create;
try
StrStream.SetSize(Length(Value));
StrLCopy(StrStream.Memory,PChar(Value),StrStream.Size);
while StrStream.Position < StrStream.Size do
ObjectTextToBinary(StrStream, BinStream);
Writer:= TWriter.Create(BinStream, 16);
try
Writer.WriteListEnd;
finally
Writer.Free;
end;
BinStream.Seek(0, soFromBeginning);
with TReader.Create(BinStream, 4096) do
Begin
try
OnFindComponentClass:= OnClass;
OnSetName:= SetName;
OnError:= ReadError;
ReadComponents(AOwner, AParent, Prog);
BinStream.Seek(0, soFromBeginning);
finally
Free;
end;
end;
Finally
FreeAndNil(BinStream);
FreeAndNil(StrStream);
end;
end;
end;
Das klappt auch alles ganz gut, solange ich das OnClick weglasse.
Mit dem OnClick kommt "ungültiger Eigenchaftswert".
Wie bekomme ich denn dem TReader irgendwie die Methoden beigebracht?
Hintergrund:
Ich will sowas wie einen eigenen Object-Inspector bauen,
um dynamische Forms zu konstruieren.
Das Speichern klappt ja auch (ausser OnClick) und das Laden halt nicht.
Danke im voraus.