Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.034 c
14-1084299724
ИМХО
2004-05-11 22:22
2004.05.30
Кто-нить уже создает справки в новом формате?


11-1072342644
<Falcon>
2003-12-25 11:57
2004.05.30
Странное поведение хинтов...


3-1083421990
Sour
2004-05-01 18:33
2004.05.30
xpath


7-1082805094
Andrew_Rostov
2004-04-24 15:11
2004.05.30
Измерение времени с точностью до мс


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





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