Ja, AQTime is echt ganz toll. Aber um auf deine ursprüngliche frage zurück zu kommen:
Zitat:
Kann man zur Design-Zeit eine
DFM-Datei automatisch erzeugen, aus der Delphi zur Laufzeit die entsprechende Form darstellt?
Du kannst in delphi jede beliebige komponente, mit unterkomponenten, streamen lassen. Das muss nicht unbedingt ein form sein. Dh. du könntest auch sagen, dass du nur den inhalt einer Tabs streamst, und in deiner
DB speichert.
Das ganz geht, wie der ausdruck 'streamen' schon sagt mit einem stream. Und zwar mit jedem stream in delphi:
Delphi-Quellcode:
Stream.WriteComponent(aCompo);
...
Stream.ReadComponent(aCompo);
Ich hab das früher mal für filestreams gemacht. Da is auch noch die umwandlung in Text-DFMs mit drinne, die du evtl. weglassen könntest, oder nur zur kontrolle aktivieren. Und evtl redundante streams optimieren:
Delphi-Quellcode:
function SaveCompoToFile(aCompo : TComponent; FileName: string; asBinary: Boolean = false): boolean;
var Stream1:TMemoryStream;
Stream2:TMemoryStream;
format : TStreamOriginalFormat;
begin
result := false;
format := sofText;
Stream1 := TMemoryStream.Create;
Stream2 := TMemoryStream.Create;
try
Stream1.WriteComponent(aCompo);
Stream1.Position := 0;
if not asBinary then
begin
format := sofText;
ObjectBinaryToText(Stream1,Stream2,format);
end else Stream1.SaveToStream(Stream2);
Stream2.SaveToFile(FileName);
result := true;
finally
Stream1.Free;
Stream2.Free;
end;
end;
function LoadCompoFromFile(aCompo : TComponent; FileName: string; asBinary: Boolean = false): boolean;
var FileStream:TFileStream;
MemoryStream:TMemoryStream;
format:TStreamOriginalFormat;
begin
result := false;
if not FileExists(fileName) then exit;
MemoryStream := TMemoryStream.Create;
FileStream := TFileStream.Create(FileName,fmOpenRead);
try
if not asBinary then
begin
format := sofBinary;
ObjectTextToBinary(FileStream,MemoryStream,format);
end else MemoryStream.LoadFromStream(FileStream);
MemoryStream.Position := 0;
MemoryStream.ReadComponent(aCompo);
result := true;
finally
FileStream.Free;
MemoryStream.Free;
end;
end;
Viel spass
mâxîmôv.
{KDT}