Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.022 c
3-1083509571
Крутыш
2004-05-02 18:52
2004.05.30
Какой лучше использовать протокол


1-1084962166
Diogen
2004-05-19 14:22
2004.05.30
Работа с датами ...


14-1083932563
Vovchik_A
2004-05-07 16:22
2004.05.30
С наступающим праздником !


1-1084822229
zep
2004-05-17 23:30
2004.05.30
maskedit


3-1083683677
Мунька
2004-05-04 19:14
2004.05.30
Проблема в ADO