Главная страница
    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.45 MB
Время: 0.027 c
6-1082602212
FatBase
2004-04-22 06:50
2004.06.13
Base64 кодирование файлов


1-1086179781
Валентин Сушняк
2004-06-02 16:36
2004.06.13
Массивы.


3-1085157912
Igor_P
2004-05-21 20:45
2004.06.13
автоинкремент в Interbase


1-1085773370
hiperLogun
2004-05-28 23:42
2004.06.13
Popup!!!


3-1085226867
KADAN
2004-05-22 15:54
2004.06.13
перебор всех записей без прорисовки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский