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

Вниз

Смена языка интерфейса   Найти похожие ветки 

 
Ajax ©   (2003-07-06 21:27) [0]

В своей программе необходимо реализовать несколько языков интерфейса и их смену пользователем. В VCL использовал бы FindComponent. Есть ли в KOL какая-либо альтернатива???

PS: У меня была идея перебора  всех контролов по GetWindow. Но как получить имя контрола, зная его хэндл?


 
SPeller ©   (2003-07-07 14:02) [1]

Только жестко прописывая Label1.Cation := то-то. Можно использовать свойство Tag для идентификации.


 
Avenger[NhT] ©   (2003-07-07 14:19) [2]


> Ajax ©

Юзайте RTTI...


 
Gandalf ©   (2003-07-07 16:12) [3]


> Юзайте RTTI...


Его нет KOL (если речь идет об object версии).


> Есть ли в KOL какая-либо альтернатива???


Нет, в KOL нет Name - потому можно делать перебор через Children по Caption (или Tag или другому свойству) - которые фиксируются заранее ("Button1"..."Buttonn").


> У меня была идея перебора  всех контролов по GetWindow.
> Но как получить имя контрола, зная его хэндл?


Нет ничего проще

MyControl := Pointer( GetProp( Controlhandle, ID_SELF ) );


 
puky   (2003-07-07 19:54) [4]

Можеш посмотреть http://tinyware.by.ru/dev/ml.exe
Но пока есть проблемы -
1) без исправления kol.pas - нет доступа к попап-меню.
2) Перевод идет только в одну сторону.


 
Кладов   (2003-07-07 21:15) [5]

Но это же известные вам контролы. Сформируйте список, или массив этих контролов, и никаких проблем с идентификацией, поиском. Соспоставьте массив/список строк, в каждом языке свой, вот и все.


 
puky   (2003-07-07 21:37) [6]

2Кладов:
Все дело в ручной формировке списка, если компонентов куча, как в UGH, то это долго, быстрее сделать на автомате.


 
SPeller ©   (2003-07-08 03:53) [7]


> puky   (07.07.03 21:37)
> 2Кладов:
> Все дело в ручной формировке списка, если компонентов куча,
> как в UGH, то это долго, быстрее сделать на автомате.

Это не долго. Потратишь время на составление списка, зато код будет более эффективным. А "автомат" - штука ненадёжная и менее эффективная. Если у тебя будет тысяча контролов, то сколько времени твой автомат будет выполняться?


 
Ajax ©   (2003-07-08 07:28) [8]

>Если у тебя будет тысяча контролов, то сколько времени твой
>автомат будет выполняться?
IMHO примерно столько же, сколько и перебор списка.

Короче говоря, на KOL это не делается...


 
Кладов   (2003-07-08 18:26) [9]

Эффективность выполнения в run-time не имеет значения, задача мизерна по времени в любом случае. Но во время разработки время будет меньше, если просто составить список контролов, чем составить список имен контролов, и еще сделать код, который будет искать контролы по именам, разве нет?


const Ctrls: PList;
var Captions: PStrList;

в FormCreate:
 procedure AddCtrls( const C: array of PControl );
 var i:integer;
 begin
   for i := 0 to High( C ) do
     Ctrls.Add( C );
 end;
begin
 Ctrls := NewList;
 AddCtrls( [ Button1, Button2 ] );
end;

смена языка:

Captions.LoadFromStream( StrmRussian );
for i := 0 to Ctrls.Count-1 do
 PControl( Ctrls[ i ] ).Caption := Captions.Items[ i ];


Я не вижу в чем проблема. В том, что непременно хочется иметь список в виде
Button1="Да"
Button2="Нет"
как в ini-файле? А кто мешает иметь эти имена, если так хочется, но отбрасывать при загрузке. Да, согласен, нет контроля. Но контроль нужен для того, кто составляет/исправляет список, а не для программы. Это человек в данном случае может ошибиться, а не машина.

Выпрямляйте свои мысли. Нас в VCL научили, что все надо делать наоборот. Это не всегда верный подход.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 1.02 c
6-1073819730
PInokio
2004-01-11 14:15
2004.03.28
Цикл для ClientSocket plz Help


14-1077798853
race1
2004-02-26 15:34
2004.03.28
удалённый рабочий стол


3-1077899455
Exciter
2004-02-27 19:30
2004.03.28
Заморочка с Post в TIBDataSet (4.52)


1-1078558516
YurikGl
2004-03-06 10:35
2004.03.28
qtintf70.dll


6-1073655406
Va
2004-01-09 16:36
2004.03.28
Как узнать, что закончилась регистрация в сети ?





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