Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.032 c
1-1086152745
AlexFe
2004-06-02 09:05
2004.06.13
Работа с MS Word


1-1086197197
init13
2004-06-02 21:26
2004.06.13
Селф?


9-1075830233
sqirrel
2004-02-03 20:43
2004.06.13
Game Maker


6-1082541457
dreams
2004-04-21 13:57
2004.06.13
Как работать с ClinetSocket через прокси ?


1-1085773815
DIS
2004-05-28 23:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский