ли не трогать Combobox, то при закрытии программы Itemindex
будет иметь значение - /. В нашем же случае предусмотрены, как
писалось выше, только
0
и
1.
Для того, чтобы этого не произош-
ло, просто перед первым запуском программы в файле Larig.txt
нужно ввести
1
или
О,
но ни в коем случае не что-то другое.
Самая главная часть тестовой программы описана в событии
FormCreate
нашей формы. Перед запуском программа читает из
файла Lang.txt значение (цифру 1 или о), после чего, в зависимо-
сти от полученной цифры, присваивает переменной
dir
файл Russ-
ian.ini или English.ini, включая полный путь к нему. Затем перемен-
ная
Mylni
ассоциируется с переменной
dir
и запускается функ-
ция
Language (Sender).
Эта созданная нами функция, листинг ко-
торой приводится чуть ниже, отвечает за присвоение каждому
компоненту текста на русском или английском языках,
procedure TForml. FormCreate (Sender: TObject);
/ /Происходит загрузка программы
begin
/ /Ассоциируем файл
Lang.txt
с переменной F
assignfile(f, 'lang.txt');
//Процедурой reset (F) готовим эту переменную к чте-
нию. Содержимое файла остается в сохранности
reset(f);
//Считываем из F в переменную s один символ (а нам
больше и не надо, правильно?)
read(f, s);
/ /Если вдруг значение отрицательное-
if s='-1' then
begin
/ /.
..делаем его положительным ©
s : = ' 1 ' ;
end;
/ / если равно нулю
if s='0' then
begin
//значит, последний раз программа работала с англоя-
зычным интерфейсом
dir:=getcurrentdir+'\English.ini';
/ /сообщаем это переменной Mylni
Mylni:=tinifile.create(dir);
//запускаем ту самую Language(sender)
Language(sender);
end;
/ / ecли s равна единице-
if s='l' then
begin
/ /.
..значит, был выставлен русский язык
dir:=getcurrentdir+'\Russian.ini';
/ / сообщаем это переменной Mylni
Mylni:=tinifile.create(dir);
//и опять запускаем функцию Language (sender)
Language(sender);
end;
/ / закрываем файл
closefile(f);
//теперь еще раз проверяем, чему равна
s,
чтобы
combobox выбирал соответствующий язык из своего
списка
if s=' 0' then
combobox.Itemindex:=0;
if s=’l' then
combobox.Itemindex:=1;
end;
Пояснения. Двойная проверка значения переменной s
нужна для того, чтобы Combobox выводил выбранный ранее
язык меню. Без повторной проверки он остается пустым.
Похожую функцию напишем для события
onchange
(при-
Изменении) компонента
Combobox.
procedure TForml.ComboBoxChange(Sender: TObject) ;
//если пользователь выбрал что-то из списка
begin
/ /проверяем, что же именно он выбрал, определяя ин-
декс активного элемента списка
//если 0
if combobox. itemindex=0 then
/ / значит, выбран английский
begin
dir:=getcurrentdir+'\English.ini';
Mylni:=tinifile.create(dir);
Language(sender);
є : = '0 ';
end;
//иначе
if combobox. itemindex=l then
//русский
begin
dir:=getcurrentdir+'\Russian.ini';
Mylni:=tinifile.create(dir);
Language(sender);
s : = '1 ';
end;
//повторная проверка
if s='0’ then
combobox.itemindex:=0
else
combobox.itemindex:=1;
end;
Пояснения здесь аналогичны предыдущим, поэтому повто-
ряться не будем.
И наконец, та самая функция
Language (Sender).
Вот ее
полный листинг. Несмотря на то, что она такая огромная,
очевидно, что в ней выполняется одно и то же действие —
считывание информации из ini-файла и передача ее опреде-
ленному компоненту.
procedure TForml. Language (Sender: TObj ect) ;
begin
forml.Caption:=Mylni.Readstring('form', 'Caption',
'АШИПКА!! ! ' ) ;
combobox.Items[0]:=MyIni.Readstring('combobox', 'iteml',
' АШИПКА 1 ! ! ' ) ;
combobox.Items[1]:=MyIni.Readstring('combobox', 'item2',
' АШИПКА!!!');
nl.Caption:=MyIni.Readstring('menu', 'file',
'АШИПКА!!!');
n2.Caption:=MyIni.Readstring('menu', 'new', 'АШИПКА!!!');
n4.Caption:=MyIni.Readstring('menu', ' open',
'АШИПКА! ! ! ' ) ;
n5.Caption:=MyIni.Readstring('menu', ' save',
'АШИПКА! ! ! ' ) ;
n6.Caption:=MyIni.Readstring('menu', 'saveas',
'АШИПКА! !!');
n8.Caption:=Mylni.Readstring('menu', 'history',
'АШИПКА!' ! ') ;
nlO.Caption:=Mylni.Readstring('menu', 'viewpage',
'АШИПКА! ! ! ') ;
nil.Caption:=MyIni.Readstring('menu', 'parameterspage',
' АШИПКА!!!');
nl2.Caption:=MyIni.Readstring('menu',
' АШИПКА!!!');
nl4.Caption:=MyIni.Readstring('menu',
'АШИПКА!!!');
nl5.Caption:=MyIni.Readstring('menu',
'АШИПКА!!!');
nl6.Caption:=MyIni.Readstring('menu',
'АШИПКА! ! ! ' ) ;
nl7.Caption:=MyIni.Readstring('menu',
'АШИПКА! ! ! ') ;
nl9.capt ion:=MyIni.Readstring( menu ,
'АШИПКА! !!');
n20.Caption:=MyIni.Readstring('menu',
'print',
'exit',
'edit',
'undo',
'redo',
'copy',
'cut',
' AIUMnKA! ! ! ' ) ;
n21.Caption:=MyIni.Readstring('menu',
'AIUMnKA! !!');
n22.Caption:=MyIni.Readstring('menu',
' AIUMnKA! ! ! ' ) ;
n24.Caption:=MyIni.Readstring('menu',
'AIUMnKA! ! ! ' ) ;
n25.Caption:=MyIni.Readstring('menu',
'AIUMnKA! ! ! ' ) ;
n27.Caption:=Mylni.Readstring('menu',
'AIUMnKA! ! ! ' ) ;
'paste',
'delete',
'selectall',
'deleteall',
'f ind',
№ 6/333 07 февраля-14 февраля 2005
предыдущая страница 37 Мой Компьютер 2005 06 читать онлайн следующая страница 39 Мой Компьютер 2005 06 читать онлайн Домой Выключить/включить текст