Главная страница
    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.45 MB
Время: 0.035 c
6-1081873337
AlDan
2004-04-13 20:22
2004.05.30
Создание каталога на сетевом диске


9-1075736940
Igoryok
2004-02-02 18:49
2004.05.30
Зарисовка области по точкам соединённых кривыми


7-1082889675
gyry
2004-04-25 14:41
2004.05.30
Вырубание компа


8-1079203171
r00t
2004-03-13 21:39
2004.05.30
Редактирование wav


14-1084101378
lak
2004-05-09 15:16
2004.05.30
беда с кольцами





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