Sharfik писал(а):Ваш вариант не "хлещет" великолепностью. Т.е. в цикле искать в stringlist компонент... Хотя бы beginupdate воспользовались. Если "тяжкая" форма будет будут и тормоза.
stringlist заполняется данными из файла, и да, в цикле ищется значение нужных (tag=0) текстовых свойств компонентов формы, при этом найденные сразу удаляются, то есть не участвуют в дальнейших циклах, так везде, пойск по сравнению. За замечание про beginupdate спасибо, добавлю в свою програмку.
В общем beginupdate свойства нет у tcomponent, придется делать доп проверку if, легче тогда сделать в программе, а не в модуле...
- Код: Выделить всё
procedure TForm1.Button3Click(Sender: TObject); // Загрузка из файла
var
s: string;
begin
s:='';
memo1.Clear;
lang.clear;
lang.load(edit1.Text,'error load');
form1.beginupdate;
lang.langload(form1);
lang.langload(frame1_1);
lang.resfind(res1.memo1lines); // Загружаем константы
if lang.errorcount>0 then memo1.Append(lang.errorshow) else memo1.Append( 'файл загружен без ошибок' ); // Что не найдено, покажем
memo1.Append( 'Лишних строк осталось: '+inttostr(lang.musor(s)) ); // Лишнее нужно будет убрать
memo1.Append( s );
form1.endupdate;
end;
Добавлено спустя 25 минут 20 секунд:Ichthyander писал(а):Краткая инструкция в первом посте how-to от меня viewtopic.php?p=86388#p86388
stanilar писал(а):Достигается это написанием собственных наследников для нужного набора контролов, в которых переводимое слово тянется из базы, а указание того, куда и как переводить тоже делается не сложно - в базу добавлена таблица "технический язык", в которой все названия лежат на языке разработчика + к ним дописываюся индекы записи в базе. Пользователь нажимает кнопку - ко все названиям приписываюся индексы, пользователь прямо из программы открывает диалог редактирования перевода, в котором указывает индекс и нужный перевод.
- ребята, ну зачем из мухи делать слона. А как быть с нестандартными надписями? Бред, для любителей сломать головы. Вам не кажется?