Создать форму из текстового DFM
Здраствуйте,
научите как создать форму из текстового DFM
при помощи скриптера.
Спасибо.
Дмитрий.
научите как создать форму из текстового DFM
при помощи скриптера.
Спасибо.
Дмитрий.
Комментарии
Думаю тут надо очень много работать, писать юниту которая обрабатывала бы DFM-файл и строила в runtime форму...
Извините, если не прав
var
form: TForm;
FileStream: TFileStream;
MemoryStream: TMemoryStream;
begin
// создание формы на основе внешнего dfm файла
Form := TForm.CreateNew(nil);
FileStream := TFileStream.Create(dfm_file_name, fmOpenRead);
MemoryStream := TMemoryStream.Create();
ObjectTextToResource(FileStream, MemoryStream);
MemoryStream.Position :=0;
MemoryStream.ReadComponentRes(Form);
MemoryStream.Destroy();
FileStream.Destroy();
Form.ShowModal();
Form.Destroy();
end;
//
Только конечно эту функцию нужно записать не FastScript, а в коде программы и экспортировать ее в FastScript.
Тогда можно будет, вызывая ее из скрита, создавать формы из dfm.
Правда, там все не так гладко и есть пару нюансов именно при создании форм из dfm с кучей компонентов, связанных с RegiterClass и тем, что форма в dfm должны быть класса TForm.
обходимо.
берем стринг с DFM и правим первую строку прямо в рантайм на
object Form1 : TForm\r\n
К элементам формы обращаться можно по имени
FindComponent
А логику...
Думаю что если скриптер поставлен на форму и в него положен скрипт,
то и скрипт вместе с ресурсами сохраниться и восстановиться из DFM.