Текущий архив: 2004.05.30;
Скачать: CL | DM;
ВнизShowModal и Show Найти похожие ветки
← →
Developerr © (2004-05-17 17:25) [0]Желаю здравствовать. Ув. мастера, столкнулся со следующей проблемой. У меня есть 2 формы, главная и форма настроек. На форме настроек у меня есть возможность выбирать язык интерфейса, Русский, украинский и т.д. Я считываю с ini-файла. На основной форме у меня компоненты ExpressBars. После того, как я выбираю язык и нажимаю ОК выскакивает ошибка Project project.exe raised exception class EAccessViolation.... и программа перескакивает в один из модулей ExpressBars для отладки. Заметил, что это происходит если я вызываю форму настроек через ShowModal. Если вызываю просто через Show все работает нормально. Причем ошибка выскакивает, когда я я запускаю программу на исполнение в Delphi (F9). Когда запускаю программу без Delphi, ошибка такая выскакивает, но редко. А в RunTime постоянно выскакивает.
Show, в принципе, нормально, но при этом есть доступ к основной форме, т.е. можно нажимать все кнопки основной формы и т.д. Что не очень желательно.
Можно ли сделать, как-нибудь чтобы при вызове формы настроек через Show, основная форма была недоступна, пока открыта форма настроек? Или вообще, что-нибудь, хоть и через ShowModal, но чтобы ошибка не выскакивала.
Спасибо.
← →
Гаврила © (2004-05-17 17:31) [1]приведи свой код
← →
Developerr © (2004-05-17 18:12) [2]
function TMainForm.ReadIni(ASection, AString : String) : String;
var
sIniFile: TIniFile;
sPath : String[255];
const
S = "Невозможно прочитать файл"; { стандартная строка для выдачи ошибок чтения }
begin
GetDir(0,sPath);
sIniFile := TIniFile.Create(sPath + "\Language\"+MainForm.OptionsTable.FieldByName("LangFile").AsString);
Result := sIniFile.ReadString(ASection, AString, S); { [Section] String=Value }
sIniFile.Free;
end;procedure TMainForm.Language(Sender: TObject);
begin
MFile.Caption:=ReadIni("MainFormMenu","0");
MAdd.Caption:=ReadIni("MainFormMenu","1");
MPreview.Caption:=ReadIni("MainFormMenu","2");
MFilter.Caption:=ReadIni("MainFormMenu","3");
NStatistics.Caption:=ReadIni("MainFormMenu","4");
MPrint.Caption:=ReadIni("MainFormMenu","5");
MExit.Caption:=ReadIni("MainFormMenu","6");
....
end;procedure TOptionsForm.Button1Click(Sender: TObject);
begin
MainForm.Language(Self);
end;
Вот процедуры, которые в этом деле участвуют.
← →
Алхимик © (2004-05-17 18:23) [3]Ну и код...
Зачем 7-мь раз создавать ИНИ файл, читать инфу и удалять?
М.б. логичнее 1 раз создать, прочитать сразу все строки, и уничтожить ИНИ?
А где Show и ShowModal которые смущают?
← →
MU © (2004-05-17 18:32) [4]Боюсь, этого мало...
Как создается OptionsForm?
На какой строке происходит ошибка?
Страницы: 1 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.035 c