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

Вниз

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

Наверх




Память: 0.46 MB
Время: 0.005 c
1-88449
Art1
2002-05-17 15:31
2002.05.27
Как сделатьт указатель на переменную?


1-88529
Mateus
2002-05-16 08:58
2002.05.27
Как зарегистрить DCOM-сервер, написанный как DLL?


3-88319
СергейКнязев
2002-04-29 17:09
2002.05.27
Как работать с локальной таблицей Paradox без установленного BDE.


1-88472
VicV
2002-05-17 23:02
2002.05.27
Как отключить эти 3 кнопки на форме (закрыть, свернуть, востан.)


3-88357
Voldemar
2002-04-30 21:11
2002.05.27
Печать из QuickReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский