![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сохранить значение в ini из другой формы
Garacio © (2007-01-18 19:54:00)Пробовал:
procedure TForm1.FormCreate(Sender: TObject);
begin
Ini:= TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Form2.Edit1.Text := Ini .ReadString('tools', 'edit1', 'text');
Ini .Destroy;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Ini .WriteString('tools', 'edit1', Form2.Edit1.Text);
Ini .Free;
end;
ругается!
Плохиш (2007-01-19 11:14:00) [1]
> Garacio © (18.01.07 19:54)
> Пробовал:
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Ini:= TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.
> ini');
> Form2.Edit1.Text := Ini .ReadString('tools', 'edit1', 'text');
> Garacio © (18.01.07 20:27) [5]
> В автосоздание форм я не лез, Form1- main
Ну не существует во время выполнения TForm1.FormCreate формы Form2, ещё не существует.
> Garacio © (19.01.07 08:34) [11]
> Хочется научиться делать всё грамотно, а не "чтобы работало"!
Правильно, каждый объект должен заниматься сохранением/востановлением только своих свойст и не лезть в чужой монастырь...
Garacio (2007-01-19 09:33:00) [2]тоже не выход! - создавать пару десятков лишних переменных, я уже не говорю про описание всех процедур!
ASoft (2007-01-19 09:17:00) [3]
> Garacio © (19.01.07 08:34) [11]
Создай глобальные переменные, читай/записывай их из всех своих не главных форм при show/create-close/hide, или что-там у тебя, а при закрытии приложения одним махом сохраняй в ini... что париться-то °)
Garacio (2007-01-19 08:34:00) [4]Блин, надо было для нажатия кнопки изменить Hide на Close :-)
Нахрена делать всё это в Form1 ? Смысл в этом какой скажите мне ?
А что делать, если у тебя ни одна форма и ни две? - В каждой:
IniFile... Ini .Free... IniFile.Create... Ini .Destroy;.. ?
Хочется научиться делать всё грамотно, а не "чтобы работало"!
P.S. Есть у кого-нибудь проверенныйпример сохранения в ini параметров второй формы из первой?
FAskerQ (2007-01-18 21:31:00) [5]
> Garacio © (18.01.07 21:19) [8]
Отлично всё работает, внимательно читайте
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Ini .WriteString('tools', 'edit1', Edit1.Text);
Ini .Free;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Ini:= TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Edit1.Text:= Ini.ReadString('tools', 'edit1', Edit1.Text);
Ini .Destroy;
end;
Джо (2007-01-18 21:21:00) [6]> [8] Garacio © (18.01.07 21:19)
> > FAskerQ
> ХА-ХА-ХА!!!
> Уже пробовал!
> Полтергейст какой то!
Не полтергейст, а наверняка пробовал Form2.xxx.
Garacio (2007-01-18 21:19:00) [7]Удалено модератором
Примечание: Флудить завязываем
FAskerQ (2007-01-18 21:12:00) [8]
> Garacio © (18.01.07 19:54)
Нахрена делать всё это в Form1 ? Смысл в этом какой скажите мне ?
Чем вам не нравиться такой код ?
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Ini .WriteString('tools', 'edit1', Edit1.Text);
Ini .Free;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Ini:= TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'save.ini');
Edit1.Text:= Ini.ReadString('tools', 'edit1', Edit1.Text);
Ini .Destroy;
end;
Kostafey (2007-01-18 20:37:00) [9]если по-простому, то что-то вроде того:
вызывать не при
> procedure TForm1.FormCreate(Sender: TObject);
а при
procedure TForm1.FormShow(Sender: TObject);
Anatoly Podgoretsky (2007-01-18 20:27:00) [10]> Virgo_Style (18.01.2007 20:26:03) [3]
А ему пофиг, ты не умничай, ты отвечай.
Garacio (2007-01-18 20:27:00) [11]В автосоздание форм я не лез, Form1- main
Virgo_Style (2007-01-18 20:26:00) [12]Партизан, однако. Как ругается - не говоришь, создана ли форма - не говоришь...
Garacio (2007-01-18 20:23:00) [13]Ругается коннкретно наэту строку:
Form2.Edit1.Text := Ini .ReadString('tools', 'edit1', 'text');
То-же самое происходит, если пробую с CheckBox-ом на Form2.
Открываю save.ini там только edit1=
ИUses Unit2;прописано.
Мне тоже не совсем понятно - какой ответ требуетс яна вопрос:
Форма, ссылка на которую хранится в переменной Form2 уже создана на момент вызова?
Отвечу так: Form1(Show) и Form2(Hide), Form2.Edit1.Text='', листинг выше
Джо (2007-01-18 20:03:00) [14]> ругается!
Матом?
Форма, ссылка на которую хранится в переменной Form2 уже создана на момент вызова?
П.С. Вроде человек уже не первый день на форуме, а вопросы формулировать никак не научится, что за синдром такой...