Admin!
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
|
Цитата:
Сообщение от jpg
чорт программа теперь бесплатная.. в смысле спасибо, я просто с платной поэкспериментировать хотел.
Я заметил в программе недочет, может так и должно быть, при нажатии на "Транслит" меняет все в транслит, а вот обратно не меняет на русский когда галку убирает.
Тем способом который я знаю, менять на русский обратно я бы тоже поленился делать. )
|
а зачем нажимать транслит если тебе транслит не нужен?), так что смысла обратной операции я не вижу
вот кстати код который все контролы переводит в транслит:
delphi Код:
function Convert(OldName: string): string;
var OldNameLength: integer;
i: integer;
s: string;
begin
OldNameLength := length(OldName);
s:='';
i:=1;
while i <= OldNameLength do begin
if (OldName[i] in ['A'..'Z']+['a'..'z']+['0'..'9']+
['{']+['}']+['[']+[']']+['`']+['~']+
['!']+['@']+['#']+['$']+['%']+['^']+
['&']+['*']+['(']+[')']+['-']+['_']+
['+']+['=']+['\']+['|']+[';']+[':']+
['"']+['{']+['<']+['>']+[',']+['.']+
[' ']+['?']+['/']+['№']+['^','''',#13,#10])
then s:=s+OldName[i];
if OldName[i] in ['А','Б','а','б'] then
s:=s+chr(ord(OldName[i])-127);
if OldName[i] in ['В','в'] then
s:=s+chr(ord(OldName[i])-108);
if OldName[i] in ['Г','г','Ж','ж'] then
s:=s+chr(ord(OldName[i])-124);
if OldName[i] in ['Д','д','Е','е'] then
s:=s+chr(ord(OldName[i])-128);
if OldName[i] in ['З','з'] then
s:=s+chr(ord(OldName[i])-109);
if OldName[i] in ['И','и','К','к','Л','л','М','м','Н','н','О','о','П','п'] then
s:=s+chr(ord(OldName[i])-127);
if OldName[i] in ['Й','й'] then
s:=s+chr(ord(OldName[i])-128);
if OldName[i] in ['Р','р','С','с','Т','т','У','у'] then
s:=s+chr(ord(OldName[i])-126);
if OldName[i] in ['Ф','ф'] then
s:=s+chr(ord(OldName[i])-142);
if OldName[i] in ['Х','х'] then
s:=s+chr(ord(OldName[i])-141);
if OldName[i] in ['Ц','ц'] then
s:=s+chr(ord(OldName[i])-147);
if OldName[i] in ['Ы','ы'] then
s:=s+chr(ord(OldName[i])-130);
if OldName[i] in ['Э','э'] then
s:=s+chr(ord(OldName[i])-152);
if OldName[i] = 'Ё' then s:=s+'Yo';
if OldName[i] = 'ё' then s:=s+'yo';
if OldName[i] = 'Ч' then s:=s+'Ch';
if OldName[i] = 'ч' then s:=s+'ch';
if OldName[i] = 'Ш' then s:=s+'Sh';
if OldName[i] = 'ш' then s:=s+'sh';
if OldName[i] = 'Щ' then s:=s+'Sch';
if OldName[i] = 'щ' then s:=s+'sch';
if OldName[i] in ['Ъ','ъ','Ь','ь'] then s:=s+chr(39);
if OldName[i] = 'Ю' then s:=s+'Yu';
if OldName[i] = 'ю' then s:=s+'yu';
if OldName[i] = 'Я' then s:=s+'Ya';
if OldName[i] = 'я' then s:=s+'ya';
i:=i+1;
end;
Convert:=s;
end;
procedure TfMain.chkTranslitClick(Sender: TObject);
var
i,k: Integer;
p: PPropInfo;
o: TStrings;
lg: string;
begin
if chkTranslit.Checked then
for i:=0 to Self.ComponentCount - 1 do begin
p:=GetPropInfo(Components[i].ClassInfo, 'Text');
if Assigned(p) then SetStrProp(Components[i], p, Convert(GetStrProp(Components[i], p)));
p:=GetPropInfo(Components[i].ClassInfo, 'Caption');
if Assigned(p) then SetStrProp(Components[i], p, Convert(GetStrProp(Components[i], p)));
p:=GetPropInfo(Components[i].ClassInfo, 'Items');
if Assigned(p)and(p.PropType^.Name='TStrings')then begin
o:=TStrings(GetObjectProp(Components[i], p));
o.BeginUpdate;
for k:=0 to o.Count-1 do o[k]:=Convert(o[k]);
o.EndUpdate;
end;
p:=GetPropInfo(Components[i].ClassInfo, 'Tabs');
if Assigned(p)and(p.PropType^.Name='TStrings')then begin
o:=TStrings(GetObjectProp(Components[i], p));
o.BeginUpdate;
for k:=0 to o.Count-1 do o[k]:=Convert(o[k]);
o.EndUpdate;
end;
end;
end;
Кстати а зачем тебе с l2Walker Corrector эксперементировать?)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
|