Главная страница
    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.006 c
3-88346
nikulin
2002-04-30 15:51
2002.05.27
КАК?????


3-88389
Snake
2002-05-02 14:26
2002.05.27
Не работает Locate!


14-88604
ATLANTIDO
2002-04-18 20:41
2002.05.27
Обработчики


3-88332
MaXie
2002-04-30 11:51
2002.05.27
Update ODBC -> смерть клиенту!


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





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