Главная страница
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.065 c
1-1084662440
mister
2004-05-16 03:07
2004.05.30
две библиотеки


8-1079617722
Ёпрст
2004-03-18 16:48
2004.05.30
TJpegImage -> TBitmap


3-1083530028
Kirill
2004-05-03 00:33
2004.05.30
Открываются только 30 записей


1-1084560173
Федя Мегатронов
2004-05-14 22:42
2004.05.30
Код исключения EidSockerError ???


1-1085044480
Shark
2004-05-20 13:14
2004.05.30
Как конвертировать DOS->WIN, если OemToChar под XP не пашет?