Главная страница
    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
Время: 0.04 c
3-1077470135
Vah
2004-02-22 20:15
2004.03.28
Подключение к MySQL через dbExpress


9-1062909682
Micah'GF
2003-09-07 08:41
2004.03.28
TDIB => TImage


14-1077521460
iusupp
2004-02-23 10:31
2004.03.28
Не могу на комп Win2000 prof установить...


11-1056812998
Dimaxx
2003-06-28 19:09
2004.03.28
Про ZLIB


14-1077778345
Иван Николаевич Понырев
2004-02-26 09:52
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский