Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сохранить значение в 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 уже создана на момент вызова?

П.С. Вроде человек уже не первый день на форуме, а вопросы формулировать никак не научится, что за синдром такой...


Наверх

Титульная страница Поиск, карта сайта Написать письмо