Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Сохранение формы в файл и чтение из файла   Найти похожие ветки 

 
DmitryNekl   (2004-05-31 10:02) [0]

Ситуация такая.

Динамически создаю форму (Form4 - пустая форма), на нее динамически вешаю контролы, сохраняю ее в файл и затем - убиваю:

procedure TForm1.Button2Click(Sender: TObject);  
procedure CreateDBEdit(T: TField; EditForm: TForm; var Top: integer);
var
 DBEdit: TDBEdit;
 Label1: TLabel;
begin
 Label1:=TLabel.Create(EditForm);
 Label1.Caption:=T.DisplayLabel;
 Label1.Left:=10;
 Label1.Top:=Top;
 Top:=Top+2+Label1.Height;
 Label1.Parent:=EditForm;
 Label1.Name:="Label"+IntToStr(Top);

 DBEdit:=TDBEdit.Create(EditForm);
 DBEdit.Top:=Top;
 DBEdit.Left:=10;
 DBEdit.Name:="DBEdit"+IntToStr(Top);
 DBEdit.DataSource:=DataSource1;
 DBEdit.DataField:=T.Name;

 DBEdit.Parent:=EditForm;
 Top:=Top+5+DBEdit.Height;
end;

var
 EditForm: TForm4;
 i, Top: integer;
 ListBox1: TListBox;
begin
 EditForm:=TForm4.Create(nil);
 EditForm.Name:="Form4";
 EditForm.Show;

 ListBox1:=TListBox.Create(EditForm);
 ListBox1.Name:="ListBox1";
 ListBox1.Align:=alRight;
 ListBox1.Parent:=EditForm;

 Top:=10;

 for i:=0 to Form1.ComponentCount-1 do
 if (Form1.Components[i] is TField) then
 begin
   if (Form1.Components[i] is TStringField) then
   begin
     CreateDBEdit(Form1.Components[i] as TField, EditForm, Top);
     ListBox1.Items.Add((Form1.Components[i] as TStringField).Name);
   end;
 end;
 WriteComponentResFile("FormFileName", Self);
 EditForm.Free;
end;


Потом пытаюсь прочитать форму из файла:
procedure TForm1.Button5Click(Sender: TObject);
var f: TForm;
begin
 F:=TForm4.Create(nil);
 F.Show;
end;


constructor TForm4.Create(AOwner: TComponent); // override;
var
 fname: String;
begin
 { Для динамически создаваемых контролов, может требоваться
 RegisterClasses(..); }
 fname:="FormFileName";
 if FileExists(fname) then
   begin
     CreateNew(AOwner);
     ReadComponentResFile(fname, Self);
   end
 else
   inherited Create(AOwner);
end;


и получаю ошибку:
Invalid Property Value (без подробностей, что за св-во и т.д.) Где я не прав и что делать?


 
TUser   (2004-05-31 10:25) [1]

Используй TJvFormStorage


 
изм   (2004-05-31 10:26) [2]

Поищи есть статья на этом сайте
чтение формы из базы


 
DmitryNekl   (2004-05-31 10:38) [3]

Статью посмотрел... не очень понял :(.

Код, который привел я, не полностью мой - конструктор переписан с http://faqs.org.ru/progr/pascal/delphi_faq4.htm

Я так понимаю, что проблема не в коде, а в его применении к моей конкретной ситуации... и я хотел бы не столько узнать о возможных решениях, сколько о своих ошибках :)


 
DmitryNekl   (2004-05-31 16:33) [4]

Все, нашел. Ошибка глупая и по невнимательности.



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.06 c
14-1085815415
Mad Dancer
2004-05-29 11:23
2004.06.13
Колосоккер


1-1085778202
Talle
2004-05-29 01:03
2004.06.13
Динамический массив


14-1085429379
syte_ser78
2004-05-25 00:09
2004.06.13
помогите с настройкой phpmyadmin


14-1085572047
kondryuk
2004-05-26 15:47
2004.06.13
нужен компилятор


14-1085847864
Александр
2004-05-29 20:24
2004.06.13
Установка компонентов