Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.27;
Скачать: CL | DM;

Вниз

Снова INI...   Найти похожие ветки 

 
Riko   (2002-05-15 16:52) [0]

Не могу прочитать без ошибки запись в INI файле. Данный код находиться на форме Form1, а Edit1 на форме Extract. И еще - после того как я закрываю форму, когда она развернута на весь экран, а потом снова открываю, и пытаюсь восстановить ничего не происходит - средняя кнопка Развернуть/Восстановить не работает.

//чтение данных из .INI файла
procedure TForm1.ReadIni;
Var
IniFile:TIniFile;
begin
IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0),".INI"));
Form1.Top:=IniFile.ReadInteger("Main Window","Top",Form1.Top);
Form1.Left:=IniFile.ReadInteger("Main Window","Left",Form1.Left);
Form1.Height:=IniFile.ReadInteger("Main Window","Height",Form1.Height);
Form1.Width:=IniFile.ReadInteger("Main Window","Width",Form1.Width);

//Edit1 находится на форме Extract
//не хочет читать, выдает ошибку типа "Access....." перед запуском проги
Extract.Edit1.Text:=IniFile.ReadString("Extract","Path",Extract.Edit1.Text);

IniFile.Free;
end;

//запись данных в .INI файл
procedure TForm1.WriteIni;
Var
IniFile:TIniFile;
begin
IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0),".INI"));
IniFile.WriteInteger("Main Window","Top",Form1.Top);
IniFile.WriteInteger("Main Window","Left",Form1.Left);
IniFile.WriteInteger("Main Window","Height",Form1.Height);
IniFile.WriteInteger("Main Window","Width",Form1.Width);

//пишиться, вроде, без проблем
IniFile.WriteString("Extract","Path",Extract.Edit1.Text);

IniFile.Free;
end;


 
VID ©   (2002-05-15 17:26) [1]


> //Edit1 находится на форме Extract
> //не хочет читать, выдает ошибку типа "Access....." перед
> запуском проги
> Extract.Edit1.Text:=IniFile.ReadString("Extract","Path",Extract.Edit1.Text);

Здесь дело в том, что ты скорее всего процедуру READINI вызываешь на событии Create объекта FORM1. А я уверен что form1 у тебя создаётся первой и является главной. А теперь внимание: В процессе создания главной формы, ещё не существуют другие формы. В данном случае - форма Extract. Формы создаются по-очереди. Сначала главная (form1), затем та, которая находится в списке автоматически создаваемых форм. И на этапе создания формы X форма X+1 ещё не существует ! Потому и ошибка. Метод решения:

Определи вызов процедуры ReadIni на событии onShow объекта Form1. Если тебе нужно что бы ReadIni вызывалась только один раз, а не всякий раз когда происходит Form1.Show, то можно сделать так:

procedure tform1.form1show(sender:tobject);
begin
if form1.tag = 0 then
begin
ReadIni;
Form1.Tag := 1;
end;

Далее:

> И еще - после того как я закрываю форму, когда она развернута
> на весь экран, а потом снова открываю, и пытаюсь восстановить
> ничего не происходит - средняя кнопка Развернуть/Восстановить
> не работает.


Здесь дело в том, что ты закрыв форму сохраняешь её left, top, width и height. Но не сохраняешь form1.WindowState. Т.е. при следующем открытии формы, восстанавливаются её left, top, width и height, но ничего не говориться о состоянии WindowSate, которое ты так и не сохранил в IniFile перед закрытием формы. Поэтому windowstate формы, по-умолчанию принимает значение wsNormal, т.е. немаксимизированное окно. А кнопка Развернуть/Восстановить работает... просто ты не замечаешь её работы, т.к. в данном случае получается что MAXIMIZED-состояние формы = NORMAL-состоянию.

Одним словом... использовал бы ты лучше для этого компонент FormStorage из пакета RxLib.


 
Riko   (2002-05-15 17:59) [2]

Спасибо!
Я все понял.
Где можно грузонуть RxLib и подойдет ли она к D3?



Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
1-88527
allrussia
2002-05-15 13:01
2002.05.27
Д.д. Напомните, как сделать, чтобы INT64 работала в D3?


3-88372
mik
2002-04-30 12:00
2002.05.27
Почему у меня создаются файлы Del1.MB и _QSLQ000.DBF


3-88355
Lit_Bogdan
2002-04-26 00:28
2002.05.27
Как отобразить в DBGrid число с сотыми когда они нули?


1-88399
Димок
2002-05-15 18:03
2002.05.27
Как вставить свой пункт в чужое PopuMenu?


3-88344
kan2002
2002-04-30 16:11
2002.05.27
Johnman по ZReport, у меня нету компоненты dxBar?