Форум: "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