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

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

INI + Form


form1 ©   (2007-02-19 14:27:00) 

Привет всем! У мну такая проблема: Есть 3 формы, состояние (видима/невидима) записывается в INI файл, а при загрузке эти 2 формы считывают своё состояния, но всёравно остаются невидимыми, даже если параметры установлены, что они видимы.


Belorus   (2007-02-22 22:21:00) [1]

if a=true then
begin
Form3.Visible:=true;
//Form3.Show;
end
else
begin
Form3.Visible:=false;
//Form3.Hide;
end;


Это заменяется на
Form3.Visible:=a;


RASkov   (2007-02-21 18:56:00) [2]

> Читай значение из ини, если там False, просто не создавай
> форму.


> [5] form1   (21.02.07 14:49)

И сделай это где-нибудь в одном месте для всех форм... например на OnCreate главной формы.
В свойствах проекта выкинь из AutoCreateForm все кроме главной.


fd979   (2007-02-21 15:02:00) [3]

FormStyle на что установлен?


Джо   (2007-02-21 15:02:00) [4]

А зачем создавать форму, если она не будет показана? Читай значение из ини, если там False, просто не создавай форму.

И еще недочеты в коде:
1. Вместо "if a=true then" пишут просто "if a then"
2. Используй try..finally при работе с TIniFile
3. Не используй обращение к глоб. переменной, т.е., в методе класса пиши так: "ini.WriteBool('Main','Test',Visible)".


form1   (2007-02-21 14:49:00) [5]

Вот код из 3 формы:

procedure TForm3.FormCreate(Sender: TObject);
var ini:TIniFile;
     a: boolean;
begin
ini:=TINIFile.Create('C;\test.ini');
a:=ini.ReadBool('Main','Test',false);
if a=true then
begin
Form3.Visible:=true;
//Form3.Show;
end
else
begin
Form3.Visible:=false;
//Form3.Hide;
end;
ini.Free;
end;

procedure TForm3.FormDestroy(Sender: TObject);
var ini:TIniFile;
begin
ini:=TINIFile.Create('C;\test.ini');
ini.WriteBool('Main','Test',Form3.Visible);
ini.free;
end;


аналогично во второй форме.


Belorus   (2007-02-20 17:30:00) [6]

У нас использование TTelepat платное. Так что form1 или раскошеливайся, или приводи весь код.


DVM   (2007-02-19 15:52:00) [7]


> Покажи тот момент, где ты читаешь параметры из ини, и скажи
> в каком месте, какой формы это(чтение) происходит.

в OnShow :)


RASkov   (2007-02-19 15:34:00) [8]

> [0] form1   (19.02.07 14:27)

Покажи тот момент, где ты читаешь параметры из ини, и скажи в каком месте, какой формы это(чтение) происходит.


Джо   (2007-02-19 14:34:00) [9]

наверное, ты неправильно это делаешь.


Наверх

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