Главная страница
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.062 c
11-1074703352
Vladimir Kladov
2004-01-21 19:42
2004.05.30
Версия 1.90


8-1080054213
Pa5ha
2004-03-23 18:03
2004.05.30
IndexedBuffer


3-1083681061
Doctor Deejay
2004-05-04 18:31
2004.05.30
дублирование записей


1-1084443190
pantera
2004-05-13 14:13
2004.05.30
Проблема с диаграммой пирог (Pie) компонента TeeChart


11-1074712103
mike.dld
2004-01-21 22:08
2004.05.30
СиБилдер