Короче, задача - пробежаться по всем контролам окна и получить по каждому из них {PROP:text} для того, чтобы этот самый {PROP:text} изменить некоей функцией.
В принципе, можно для каждого контрола персонально прописать
?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
Но хотелось бы сделать цикл, который бы "пробегался" по всем контролам и делал это.
Заранее благодарен за советы.
Игорь Смирнов
(Добавление)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:07:27
Тема: Получение списка контролов {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Igor.
Вы писали 1 сентября 2004 г., 12:27:33:
IS> Коллеги, наверное, вопрос детски, но все же.
IS> Короче, задача - пробежаться по всем контролам окна и
IS> получить по каждому из них {PROP:text} для того, чтобы этот самый
IS> {PROP:text} изменить некоей функцией.
IS> В принципе, можно для каждого контрола персонально прописать
IS> ?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
IS> Но хотелось бы сделать цикл, который бы "пробегался" по всем контролам и делал это.
Loop Control#=FirstField() to LastField()
If Control#{Prop:Type} ! Если контрол существует
Control#{Prop:text}=
....
End
End
А ещё есть Prop:NextField
Control#=0
Loop
Control#=0{Prop:NextField,Control#}
If Control#=0 Then Break.
....
End
IS> Заранее благодарен за советы.
IS> Игорь Смирнов
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:50:19
Тема: Получение списка контролов {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> А ещё есть Prop:NextField
>
> Control#=0
> Loop
> Control#=0{Prop:NextField,Control#}
> If Control#=0 Then Break.
> ....
> End
>
Все это благородно, но пункты меню, насколько я помню, имеют ОТРИЦАТЕЛЬНЫЙ
Field.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 14:37:54
Тема: Получение списка контролов {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Igor.
Вы писали 1 сентября 2004 г., 13:50:19:
>> А ещё есть Prop:NextField
>>
>> Control#=0
>> Loop
>> Control#=0{Prop:NextField,Control#}
>> If Control#=0 Then Break.
>> ....
>> End
>>
IG> Все это благородно, но пункты меню, насколько я помню, имеют ОТРИЦАТЕЛЬНЫЙ
IG> Field.
А их переводить не надо?
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Дмитрий Осипов <Dima_Osipov@km.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 12:51:58
Тема: Получение списка контролов {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Igor.
Вы писали 1 сентября 2004 г., 12:27:33:
IS> Коллеги, наверное, вопрос детски, но все же.
IS> Короче, задача - пробежаться по всем контролам окна и
IS> получить по каждому из них {PROP:text} для того, чтобы этот самый
IS> {PROP:text} изменить некоей функцией.
IS> В принципе, можно для каждого контрола персонально прописать
IS> ?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
IS> Но хотелось бы сделать цикл, который бы "пробегался" по всем контролам и делал это.
IS> Заранее благодарен за советы.
IS> Игорь Смирнов
RTFM prop:nextfield
Что-то вроде
loop
tf#=Window{prop:nextfield,tf#}
if ~tf# then break.
window$tf#{prop:text}=......
end
--
С уважением,
Дмитрий Осипов mailto:Dima_Osipov@km.ru
ICQ 14543897
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 12:51:50
Тема: Получение списка контролов {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
LOOP
FieldCounter=0{PROP:NextField,FieldCounter}
If NOT FieldCounter then Break .
! [...]
end
WBR, Nick Tsigouro mailto:nick@arsis.ru
> -----Original Message-----
> From: ClaListAdmin@Clarion.ru [mailto:ClaListAdmin@Clarion.ru]On Behalf
> Of Igor Smirnov
> Sent: Wednesday, September 01, 2004 12:28 PM
> To: clalist List Member
> Subject: Получение списка контролов {01}
>
>
> Коллеги, наверное, вопрос детски, но все же.
> Короче, задача - пробежаться по всем контролам окна и получить по
> каждому из них {PROP:text} для того, чтобы этот самый {PROP:text}
> изменить некоей функцией.
> В принципе, можно для каждого контрола персонально прописать
> ?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
> Но хотелось бы сделать цикл, который бы "пробегался" по всем контр
> олам и делал это.
>
> Заранее благодарен за советы.
>
> Игорь Смирнов
>
>
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 12:46:59
Тема: Получение списка контролов {01} {01}
Файлы: qini.tpl
--====----====----====----====----====----====----====----====----====----===--
> Коллеги, наверное, вопрос детски, но все же.
> Короче, задача - пробежаться по всем контролам окна и получить по каждому из
них {PROP:text} для того, чтобы этот самый {PROP:text} изменить некоей функцией.
> В принципе, можно для каждого контрола персонально прописать
> ?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
> Но хотелось бы сделать цикл, который бы "пробегался" по всем контролам и делал
это.
Через темплейты. Смотри Приложение
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:19:06
Тема: Получение списка контролов {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
Не понял ход в #EXTENSION (ProcedureTranslate, 'Перевод окна'), Procedure:
#BOXED,WHERE(~%Window),AT(,10)
#DISPLAY('Не применим для данной процедуры')
#ENDBOXED
Если так делать, то весь генерируемый код надо заворачивать в #IF(%Window)
Почему не просто
#RESTRICT
#IF(%Window)
#ACCEPT
#ELSE
#REJECT
#ENDIF
#ENDRESTRICT
И разве не нужно
#EXTENSION (MainTranslate, 'Глобальные установки'),
APPLICATION(ProcedureTranslate)
и
#EXTENSION (ProcedureTranslate, 'Перевод окна'),
Procedure,REQ(MainTranslate)
?
WBR, Nick Tsigouro mailto:nick@arsis.ru
> -----Original Message-----
> From: ClaListAdmin@Clarion.ru [mailto:ClaListAdmin@Clarion.ru]On Behalf
> Of Igor Gubin
> Sent: Wednesday, September 01, 2004 12:47 PM
> To: clalist List Member
> Subject: Re: Получение списка контролов {01} {01}
>
>
> > Коллеги, наверное, вопрос детски, но все же.
> > Короче, задача - пробежаться по всем контролам окна и получить п
> о каждому из
> них {PROP:text} для того, чтобы этот самый {PROP:text} изменить не
> коей функцией.
> > В принципе, можно для каждого контрола персонально прописать
> > ?MyButton{PROP:Text}=MyFunc(?MyButton{PROP:Text})
> > Но хотелось бы сделать цикл, который бы "пробегался" по всем кон
> тролам и делал
> это.
>
> Через темплейты. Смотри Приложение
>
>
> ------------------------------------------------------------
> Igor Gubin (igor@quantor.com)
> Quantor-Soft Metal
> Phone/Fax: (+7 095) 234 4905
> WEB: http://www.metaldata.info
> http://www.metaldata.ru
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:52:19
Тема: Получение списка контролов {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
>
> Не понял ход в #EXTENSION (ProcedureTranslate, 'Перевод окна'), Procedure:
>
> #BOXED,WHERE(~%Window),AT(,10)
> #DISPLAY('Не применим для данной процедуры')
> #ENDBOXED
>
> Если так делать, то весь генерируемый код надо заворачивать в #IF(%Window)
Копеечная защита от дурака.
Это просто слегка адаптированная к массовому применению вырезка из моих
внутренних темплейтов.
И доводить до полного ума никак не найдётся время.
Но тем не менее все работает.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 14:19:13
Тема: Получение списка контролов {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> >
> > Не понял ход в #EXTENSION (ProcedureTranslate, 'Перевод окна'),
> Procedure:
> >
> > #BOXED,WHERE(~%Window),AT(,10)
> > #DISPLAY('Не применим для данной процедуры')
> > #ENDBOXED
> >
> > Если так делать, то весь генерируемый код надо заворачивать в
> #IF(%Window)
>
> Копеечная защита от дурака.
Не только. Если делать так, то нельзя автоматом навешивать
ProcedureTranslate. Код будет сгенерирован и в безоконных процедурах.
WBR, Nick Tsigouro mailto:nick@arsis.ru
> Это просто слегка адаптированная к массовому применению вырезка из моих
> внутренних темплейтов.
> И доводить до полного ума никак не найдётся время.
> Но тем не менее все работает.
>
> ------------------------------------------------------------
> Igor Gubin (igor@quantor.com)
> Quantor-Soft Metal
> Phone/Fax: (+7 095) 234 4905
> WEB: http://www.metaldata.info
> http://www.metaldata.ru
>
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:24:58
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > > Не понял ход в #EXTENSION (ProcedureTranslate, 'Перевод окна'),
> > Procedure:
> > >
> > > #BOXED,WHERE(~%Window),AT(,10)
> > > #DISPLAY('Не применим для данной процедуры')
> > > #ENDBOXED
> > >
> > > Если так делать, то весь генерируемый код надо заворачивать в
> > #IF(%Window)
> >
> > Копеечная защита от дурака.
>
> Не только. Если делать так, то нельзя автоматом навешивать
> ProcedureTranslate. Код будет сгенерирован и в безоконных процедурах.
Объясняю, что ИЗНАЧАЛЬНО делалось для себя. А я в безоконных процедурах это не
вставляю...
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:08:40
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> > > Копеечная защита от дурака.
> >
> > Не только. Если делать так, то нельзя автоматом навешивать
> > ProcedureTranslate. Код будет сгенерирован и в безоконных процедурах.
>
> Объясняю, что ИЗНАЧАЛЬНО делалось для себя. А я в безоконных проце
> дурах это не
> вставляю...
А никогда не приходилось восклицать "Ай, блин, дубина!" имея ввиду себя
любимого? )
WBR, Nick Tsigouro mailto:nick@arsis.ru
>
> ------------------------------------------------------------
> Igor Gubin (igor@quantor.com)
> Quantor-Soft Metal
> Phone/Fax: (+7 095) 234 4905
> WEB: http://www.metaldata.info
> http://www.metaldata.ru
>
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:56:24
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > > > Копеечная защита от дурака.
> > >
> > > Не только. Если делать так, то нельзя автоматом навешивать
> > > ProcedureTranslate. Код будет сгенерирован и в безоконных процедурах.
> >
> > Объясняю, что ИЗНАЧАЛЬНО делалось для себя. А я в безоконных проце
> > дурах это не
> > вставляю...
>
> А никогда не приходилось восклицать "Ай, блин, дубина!" имея ввиду себя
> любимого? )
В этом куске нет. Там все настолько отлажено, что проблем не бывает. Да и
отлавливается элементарно.
Да и процедуры бывают у меня всего трех типов: window/browse, frame, source. Тут
не ошебешься.
Как написал эту локализацию много лет назад, так и работает.
"Работает? Не чини!"
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 17:04:46
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> "Работает? Не чини!"
Золотые слова!
WBR, Nick Tsigouro mailto:nick@arsis.ru
>
> ------------------------------------------------------------
> Igor Gubin (igor@quantor.com)
> Quantor-Soft Metal
> Phone/Fax: (+7 095) 234 4905
> WEB: http://www.metaldata.info
> http://www.metaldata.ru
>
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 2 сентября 2004 г., 10:13:31
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > "Работает? Не чини!"
>
> Золотые слова!
Кровавые! Писаны потом и кровью на многих актах о поддержке.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
(Добавление)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:07:43
Тема: Получение списка контролов {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
>
> RTFM prop:nextfield
>
> Что-то вроде
> loop
> tf#=Window{prop:nextfield,tf#}
> if ~tf# then break.
> window$tf#{prop:text}=......
> end
>
>
> --
> С уважением,
> Дмитрий Осипов mailto:Dima_Osipov@km.ru
>
> ICQ 14543897
==========================================
Большое спасибо за советы. Пока реализовал совет Николая Цигуро - работает на "ура".
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 13:19:06
Тема: Получение списка контролов {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
Одно замечание. PROP:NextField, FirstField() и LastField() ничего не знают
про контролы созданные в рантайм через Create(). C такими разговор
отдельный. Веди по ним свой список.
WBR, Nick Tsigouro mailto:nick@arsis.ru
> Большое спасибо за советы. Пока реализовал совет Николая Цигуро -
> работает на "ура".
PS. Вообще то, это не мой вариант. F1 рулит
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 14:04:17
Тема: Получение списка контролов {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Nick.
Вы писали 1 сентября 2004 г., 13:19:06:
NT> Hi.
NT> Одно замечание. PROP:NextField, FirstField() и LastField() ничего не знают
NT> про контролы созданные в рантайм через Create(). C такими разговор
NT> отдельный. Веди по ним свой список.
NT> WBR, Nick Tsigouro mailto:nick@arsis.ru
Вроде знают... У меня целые экраны создаются в рантайме. И активно работаю с такими функциями. А вот шаблоны, естественно, не знают...
Другой вопрос, что в список полей входит меню, тулбар и всё такое. Поэтому FirstField может быть отрицательным, а в последовательности FirstField-LastField - изрядные дырки...
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 14:23:40
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> NT> Одно замечание. PROP:NextField, FirstField() и LastField()
> ничего не знают
> NT> про контролы созданные в рантайм через Create(). C такими разговор
> NT> отдельный. Веди по ним свой список.
>
> NT> WBR, Nick Tsigouro mailto:nick@arsis.ru
>
> Вроде знают... У меня целые экраны создаются в рантайме. И
> активно работаю с такими функциями.
А где знают? В старых версиях точно не знали.
> А вот шаблоны, естественно, не знают...
А что они должны знать, если работают со всеми подряд через FirstField(),
LastField() и PROP:NextField?
>
> Другой вопрос, что в список полей входит меню, тулбар и всё
> такое. Поэтому FirstField может быть отрицательным, а в
> последовательности FirstField-LastField - изрядные дырки...
Если у тебя нет созданных Create-ом, и насильно пронумерованных, т.е. все
дефолтно, то откуда дырки? Да и если создавал через Create(...,0) тоже не
должно быть. Он ка-ца первый свободный номер выделяет.
WBR, Nick Tsigouro mailto:nick@arsis.ru
>
> ---------------------------------------
> C уважением,
> Юрий Философов,
> Главный программист
> Корпорация "Диполь", Саратов
> E-mail yufil@tacis-dipol.ru (служ)
> yufil@mail.ru (дом)
> ICQ#75924439
>
>
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:32:03
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Nick.
Вы писали 1 сентября 2004 г., 14:23:40:
NT> Hi.
>> NT> Одно замечание. PROP:NextField, FirstField() и LastField()
>> ничего не знают
>> NT> про контролы созданные в рантайм через Create(). C такими разговор
>> NT> отдельный. Веди по ним свой список.
>>
>> NT> WBR, Nick Tsigouro mailto:nick@arsis.ru
>>
>> Вроде знают... У меня целые экраны создаются в рантайме. И
>> активно работаю с такими функциями.
NT> А где знают? В старых версиях точно не знали.
>> А вот шаблоны, естественно, не знают...
NT> А что они должны знать, если работают со всеми подряд через FirstField(),
NT> LastField() и PROP:NextField?
>>
>> Другой вопрос, что в список полей входит меню, тулбар и всё
>> такое. Поэтому FirstField может быть отрицательным, а в
>> последовательности FirstField-LastField - изрядные дырки...
NT> Если у тебя нет созданных Create-ом, и насильно пронумерованных, т.е. все
NT> дефолтно, то откуда дырки? Да и если создавал через Create(...,0) тоже не
NT> должно быть. Он ка-ца первый свободный номер выделяет.
Вроде бы,да. Но созданный контрол и удалить можно...
А ещё.. например, мне хочется иметь контрол с чётко определённым номером и функционалом, для управления с тулбара. Например, контрол 666 - для закрытия экрана, с номером 1000 - кнопка перехода вперёд, с номером 1001 - назад, 1002 - кнопка печати и т.д. Когда-то сделал так по образцу тулбара для Browse, а теперь переделывать в лом...
А ещё... я пытаюсь создавать сложные контролы из нескольких элементов (например, прозрачная кнопка+подложка, регион+иконка состояния и т.д.). И мне удобно, чтобы контролы нумеровались с шагом не один, а три.
А вот эта вполне работоспособная процедура деактивирует все динамически созданные OCX на экране перед закрытием. Потому что некоторые OCX в активном состоянии с дивной регулярностью роняют программу.
Код: Выделить всё
Glo:Cs.Wait()
Loc:FieldNo=Target{Prop:NextField,0} ! 1 поле
Loop
If Loc:FieldNo=0 Then Break.
Loc:FieldNext=Target{Prop:NextField,Loc:FieldNo} ! Cледующее поле
If Loc:FieldNo>0
Case Loc:FieldNo{prop:Type}
Of Create:Ole
Loc:FieldNo{Prop:Deactivate}=True
End
End
Loc:FieldNo=Loc:FieldNext
End
Glo:Cs.Release()
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:07:48
Тема: Получение списка контролов {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
=======================================
Пункты меню тоже надо
В-общем, у меня получилось (и работает!!!) так:
0{PROP:Text}=GetLoc(0{PROP:Text})
LOOP
i#=0{PROP:NextField,i#}
IF ~i# THEN BREAK .
i#{PROP:Text}=GetLoc(i#{PROP:Text})
END
Как видно, с заголовком окна я решил особо не заморачиваться, а выделил отдельно.
Игорь Смирнов.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:37:42
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Igor.
Вы писали 1 сентября 2004 г., 15:07:48:
IS> =======================================
IS> Пункты меню тоже надо
IS> В-общем, у меня получилось (и работает!!!) так:
IS> 0{PROP:Text}=GetLoc(0{PROP:Text})
IS> LOOP
IS> i#=0{PROP:NextField,i#}
IS> IF ~i# THEN BREAK .
IS> i#{PROP:Text}=GetLoc(i#{PROP:Text})
IS> END
IS> Как видно, с заголовком окна я решил особо не заморачиваться, а выделил отдельно.
А ещё надо перевести Message, Tip'ы и разобрать заголовки в листбоксах. И всё будет хорошо
IS> Игорь Смирнов.
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:21:57
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> IS> Как видно, с заголовком окна я решил особо не заморачиваться, а выделил
отдельно.
>
> А ещё надо перевести Message, Tip'ы и разобрать заголовки в листбоксах. И всё
будет хорошо
>
Вот это тот самый шаблон и делал.
А все созданное вручную локализуется вручную вызовом "стандартных" функций
локализации.
И НИКАКИХ проблем. Ещёб меньше глюков с CHARSET и вообще лафа была.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:30:32
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> Пункты меню тоже надо
> В-общем, у меня получилось (и работает!!!) так:
>
> 0{PROP:Text}=GetLoc(0{PROP:Text})
> LOOP
> i#=0{PROP:NextField,i#}
> IF ~i# THEN BREAK .
> i#{PROP:Text}=GetLoc(i#{PROP:Text})
> END
>
Здесь есть маленькая проблема. При модификации окна со сменой порядка контролов
вся твоя локализация отправится туда, через что просачивался Кристобаль Хозевич.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Дуга Михаил <mikeduglas@intercare.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:53:50
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
С чего вдруг?
(Добавление)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:16:02
Тема: Получение списка контролов {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
В ту же тему - теперь такая проблема.
Есть в окне выпадающий список.
Он наполняется несколькими фиксированными цифровыми значениями и, соответственно, текстовыми идентификаторами.
Вот такой:
LIST,AT(341,95,61,11),USE(RCMode[1]),DROP(5),FROM('Value 0!#0!Value 1!#1!Value 2!#2')
Соответственно, эти текстовые идентификаторы тоже нужно динамически перевести.
Я потыркался с {PROP:From} - ничего не срабатывает.
Причем, даже пробовал не через функцию переода вызвать, а просто тупо написал:
RCMode[1]{PROP:From}='Вариант 0!#0!Вариант 1!#1!Вариант 2!#2'
Все равно ничего не работает.
Игорь Смирнов.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Fish <ClaList@enigmasoft.com.ua>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 19:19:16
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hello Igor,
вот такое у меня енсть окно:
ask_ch_win WINDOW('Корректировка списка изменений'),AT(,,298,56),FONT('helv',8,,),CENTER,GRAY,DOUBLE,mdi
PANEL,AT(4,4,290,32),USE(?Panel1)
PROMPT('Параметр корректировки :'),AT(8,8,94,10)
LIST,AT(104,8,90,10),USE(?chl),DROP(4),format('40L(1)~~@s20@')
PROMPT('Значние параметра :'),AT(8,20,94,10)
STRING(@s40),AT(104,20,164,10),USE(val_ofparam)
BUTTON('&1'),AT(268,18,12,12),USE(?sel_val),key(alt1)
BUTTON('&Выполнить'),AT(202,38,45,14),USE(?doch),key(altd)
BUTTON('&Отменить'),AT(249,38,45,14),USE(?cnch),key(altj)
END
вот так формируеться строка :
loc:listparamch = 'Пользователь'&all(' ',20-len('Пользователь'))&byuser
if ~donotchangetype then loc:listparamch = clip(loc:listparamch)&'!Тип документа'&all(' ',20-len('Тип документа'))&bytyp .
if ~donotchangefrom then if sav_typ1 <> 'О' then loc:listparamch = clip(loc:listparamch)&'!От кого в документе'&all(' ',20-len('От кого в документе'))&byfr . .
if ~donotchangeto then if sav_typ2 <> 'О' then loc:listparamch = clip(loc:listparamch)&'!Кому в документе'&all(' ',20-len('Кому в документе'))&byto . .
вот так переноиться в описание списка :
?chl{prop:from} = clip(loc:listparamch)
и все есть. т.е. в списке именно те значения, что я указал. просто
кол-во значений переменное.
правда, у меня CW 4.0
--
Best regards,
Курко Максим mailto:ClaList@enigmasoft.com.ua
ICQ: <164766643>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:16:09
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> LIST,AT(341,95,61,11),USE(RCMode[1]),DROP(5),FROM('Value
> 0!#0!Value 1!#1!Value 2!#2')
Зря ты с массивами в оконных контролах связался. Можешь огрести неожиданные
проблемы.
> Соответственно, эти текстовые идентификаторы тоже нужно динамическ
> и перевести.
> Я потыркался с {PROP:From} - ничего не срабатывает.
> Причем, даже пробовал не через функцию переода вызвать, а просто т
> упо написал:
> RCMode[1]{PROP:From}='Вариант 0!#0!Вариант 1!#1!Вариант 2!#2'
?RCMode_1{PROP:From}='Вариант 0!#0!Вариант 1!#1!Вариант 2!#2'
> Все равно ничего не работает.
Без массивов совершенно точно все работает. Я иногда такие списки в ini
храню. Это когда предполагается возможность расширения, в общем-то, строго
фиксированного наборя значений.
WBR, Nick Tsigouro mailto:nick@arsis.ru
> Игорь Смирнов.
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Yuri Filosofov <yufil@tacis-dipol.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:40:35
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Здравствуйте, Igor.
Вы писали 1 сентября 2004 г., 15:16:02:
IS> В ту же тему - теперь такая проблема.
IS> Есть в окне выпадающий список.
IS> Он наполняется несколькими фиксированными цифровыми
IS> значениями и, соответственно, текстовыми идентификаторами.
IS> Вот такой:
IS> LIST,AT(341,95,61,11),USE(RCMode[1]),DROP(5),FROM('Value 0!#0!Value 1!#1!Value 2!#2')
Вроде должно работать ... А какой тип массива RCMode? Строковый ?
IS> Соответственно, эти текстовые идентификаторы тоже нужно динамически перевести.
IS> Я потыркался с {PROP:From} - ничего не срабатывает.
IS> Причем, даже пробовал не через функцию переода вызвать, а просто тупо написал:
IS> RCMode[1]{PROP:From}='Вариант 0!#0!Вариант 1!#1!Вариант 2!#2'
?RCMode_1{Prop:From} = ...
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 15:45:10
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
================================================
Порядок контролов тут значения не имеет.
Потому что в функцию перевода передается не идентификатор контрола, а текст.
Такая методика, кстати, позволяет унифицировать переведенные значения для разных контролов с одинаковым текстом. Например, во многих процедурах кнопка закрытия имеет надпись "&Close".
Соответственно передаем в функцию текст '&Close' и получаем текст '&Закрыть'.
Игорь Смирнов.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:16:09
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> Такая методика, кстати, позволяет унифицировать переведенные
> значения для разных контролов с одинаковым текстом. Например, во
Это не всегда хорошо. Бывает, что перевод зависит от контекста.
WBR, Nick Tsigouro mailto:nick@arsis.ru
> многих процедурах кнопка закрытия имеет надпись "&Close".
> Соответственно передаем в функцию текст '&Close' и получаем текст
> '&Закрыть'.
>
>
> Игорь Смирнов.
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Gubin <igor@quantor.com>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:53:03
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> >
> > Здесь есть маленькая проблема. При модификации окна со сменой
> > порядка контролов вся твоя локализация отправится туда, через
> > что просачивался Кристобаль Хозевич.
> Порядок контролов тут значения не имеет.
> Потому что в функцию перевода передается не идентификатор контрола, а текст.
> Такая методика, кстати, позволяет унифицировать переведенные значения для
разных контролов с одинаковым текстом. Например, во многих процедурах кнопка
закрытия имеет надпись "&Close".
> Соответственно передаем в функцию текст '&Close' и получаем текст '&Закрыть'.
Извини, не досмотрел.
Но все одно. Не совсем правильно переводить тексты. Возможны проблемы с
очепятками и требуется ЖЕСТКАЯ дисципрлина при написании. Да и гибкость заметно
меньше. Лучше уж привязывать перевод к конкретному контролу.
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:17:25
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> IS> В ту же тему - теперь такая проблема.
> IS> Есть в окне выпадающий список.
> IS> Он наполняется несколькими фиксированными цифровыми значениями и,
> IS> соответственно, текстовыми идентификаторами.
> IS> Вот такой:
> IS> LIST,AT(341,95,61,11),USE(RCMode[1]),DROP(5),FROM('Value
> 0!#0!Value
> IS> 1!#1!Value 2!#2')
>
> Вроде должно работать ... А какой тип массива RCMode? Строковый ?
>
> IS> Соответственно, эти текстовые идентификаторы тоже нужно
> динамически перевести.
> IS> Я потыркался с {PROP:From} - ничего не срабатывает.
> IS> Причем, даже пробовал не через функцию переода вызвать, а
> просто тупо написал:
> IS> RCMode[1]{PROP:From}='Вариант 0!#0!Вариант 1!#1!Вариант 2!#2'
>
> ?RCMode_1{Prop:From} = ...
>
> IS> Все равно ничего не работает.
>
> IS> Игорь Смирнов.
>
> ---------------------------------------
> C уважением,
> Юрий Философов,
> Главный программист
> Корпорация "Диполь", Саратов
> E-mail yufil@tacis-dipol.ru (служ)
> yufil@mail.ru (дом)
> ICQ#75924439
=======================================
В-общем, основное разрешилось
Массив байтовый - но это в данном случае совсем не важно (массив или не массив).
Короче, заработало.
Более того, работает даже так:
?RCMode_1{PROP:From}=GetLoc('None') & '!#0!' & GetLoc('Private') & '!#1!' & GetLoc('Public') & '!#2'
Теперь другая проблема.
Все эти переводческие вещи задаются "After Opening the Window".
Но при этом изначальное текстовое значение, которое показывается на экране - не переведенное, а исходное (в моем случае - это текст "None", соответствующий значению 0).
При нажатии мышкой на стрелку выпадения списка там показываются уже переведенные значения - то есть, "Нет", "Частный", "Общий". При выборе любого из этих значений и сворачивании списка на экране остается переведенное значение.
Я пробовал в том же "After Opening the Window" прописать принудительное задание значения:
RCMode[1]=0
Так вот. Если задать 1 или 2, то в открытом окне видим на экране переведенное значение.
А если 0 - то исходное ("None").
Не знаю, как быть.
Игорь Смирнов.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:35:30
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> Более того, работает даже так:
> ?RCMode_1{PROP:From}=GetLoc('None') & '!#0!' & GetLoc('Private')
> & '!#1!' & GetLoc('Public') & '!#2'
>
> Теперь другая проблема.
> Все эти переводческие вещи задаются "After Opening the Window".
> Но при этом изначальное текстовое значение, которое показывается
> на экране - не переведенное, а исходное (в моем случае - это
> текст "None", соответствующий значению 0).
Какое такое изначальное? Нафиг оно нужно?
> При нажатии мышкой на стрелку выпадения списка там показываются
> уже переведенные значения - то есть, "Нет", "Частный", "Общий".
> При выборе любого из этих значений и сворачивании списка на
> экране остается переведенное значение.
> Я пробовал в том же "After Opening the Window" прописать
> принудительное задание значения:
> RCMode[1]=0
> Так вот. Если задать 1 или 2, то в открытом окне видим на экране
> переведенное значение.
> А если 0 - то исходное ("None").
Ну значит твой GetLoc('None') это возвращает. Ну сам посуди, откуда List
может взять 'None', если ты ему нигде это не вписывал.
WBR, Nick Tsigouro mailto:nick@arsis.ru
> Не знаю, как быть.
>
> Игорь Смирнов.
>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 16:42:01
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> А ещё надо перевести Message, Tip'ы и разобрать заголовки в
> листбоксах. И всё будет хорошо
======================================
Ну... Не все ж коту масленица. Надо кое-где и рутины поиметь.
Особенно заголовки в листбоксах.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 17:10:46
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > Такая методика, кстати, позволяет унифицировать
> переведенные значения
> > для разных контролов с одинаковым текстом. Например, во
>
> Это не всегда хорошо. Бывает, что перевод зависит от контекста.
>
> WBR, Nick Tsigouro mailto:nick@arsis.ru
>
===================================
Николай, ну не будем вдаваться в рассмотрение частных случаев.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 17:51:37
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > Теперь другая проблема.
> > Все эти переводческие вещи задаются "After Opening the Window".
> > Но при этом изначальное текстовое значение, которое показывается на
> > экране - не переведенное, а исходное (в моем случае - это текст
> > "None", соответствующий значению 0).
>
> Какое такое изначальное? Нафиг оно нужно?
======================================
Вот именно. Раз оно нафиг не нужно, то и не задается. То есть, там изначально 0 (ноль).
======================================
>
> > При нажатии мышкой на стрелку выпадения списка там показываются уже
> > переведенные значения - то есть, "Нет", "Частный", "Общий".
> > При выборе любого из этих значений и сворачивании списка на экране
> > остается переведенное значение.
> > Я пробовал в том же "After Opening the Window" прописать
> > принудительное задание значения:
> > RCMode[1]=0
> > Так вот. Если задать 1 или 2, то в открытом окне видим на экране
> > переведенное значение.
> > А если 0 - то исходное ("None").
>
> Ну значит твой GetLoc('None') это возвращает. Ну сам посуди,
> откуда List может взять 'None', если ты ему нигде это не вписывал.
========================================================
Дело в том, что это самое 'None' прописано в декларации окна. Больше ему брать это не от куда.
На самом деле я реализовал некий Workaround.
В-общем, нужно при декларировании переменной задать ей какое-то изначальное значение (Initial Value).
Причем, отличное от желаемого (в моем случае, не 0, а, например, 1)
А после всех этих манипуляций с заданием альтернативного "From" сразу же прописать:
LOOP i#=1 TO (сколько там у нас размерность массива)
RCMode[i#]=0
END
Тогда все работает на "ура".
Но... Есть одно маленькое "но". Дело в том, что если переменная задекларирована как масив, то ей "Initial Value" никак не задать.
Поэтому от этого Workaround'а делаем еще один Workaround:
В Эмбедах "Initialize Procedure" пишем:
LOOP i#=1 TO (сколько там у нас размерность массива)
RCMode[i#]=1
END
Вот так вот получается...
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 18:06:58
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> > Ну значит твой GetLoc('None') это возвращает. Ну сам посуди,
> > откуда List может взять 'None', если ты ему нигде это не вписывал.
> ========================================================
> Дело в том, что это самое 'None' прописано в декларации окна. Боль
Зачем? Ты же все равно будешь туда переведенную строку вписывать. Совсем
убери в декларации атрибут FROM.
> ше ему брать это не от куда.
> На самом деле я реализовал некий Workaround.
> В-общем, нужно при декларировании переменной задать ей какое-то из
> начальное значение (Initial Value).
> Причем, отличное от желаемого (в моем случае, не 0, а, например, 1)
> А после всех этих манипуляций с заданием альтернативного "From" ср
> азу же прописать:
> LOOP i#=1 TO (сколько там у нас размерность массива)
> RCMode[i#]=0
> END
> Тогда все работает на "ура".
> Но... Есть одно маленькое "но". Дело в том, что если переменная за
> декларирована как масив, то ей "Initial Value" никак не задать.
RTFM. Делается через OVER.
> Поэтому от этого Workaround'а делаем еще один Workaround:
> В Эмбедах "Initialize Procedure" пишем:
> LOOP i#=1 TO (сколько там у нас размерность массива)
> RCMode[i#]=1
> END
> Вот так вот получается...
No comments
WBR, Nick Tsigouro mailto:nick@arsis.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Igor Smirnov <igor.smirnov@documentum.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 1 сентября 2004 г., 18:47:55
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
> > Дело в том, что это самое 'None' прописано в декларации окна. Боль
>
> Зачем? Ты же все равно будешь туда переведенную строку
> вписывать. Совсем убери в декларации атрибут FROM.
========================================================
Не могу убрать. Алгоритм выстроен так - во всех окнах и т.д., и т.п. задекларированы английские названия. То есть, английский язык интерфейса - основной.
А ели выбран другой язык (то есть вариант "читать названия из файла"), тогда работает функция локализации.
И она (эта функция) работает так:
Если глобальная переменная говорит об использованиии альтернативных текстов, то работаем. Если нет - гоняем "болванчика" - что приняли на вход, то и выдали обратно.
Если все-таки работаем альтернативно, то читаем файл локализации. Если там чего нашли - возвращаем. Если не нашли - возвращаем то, что было на входе.
Да, собственно, вот вся эта функция:
GetLoc FUNCTION (InputString) ! Declare Procedure
WorkString CSTRING(100)
ReturnString CSTRING(100)
CODE ! Begin processed code
IF InterfaceLanguage=1
WorkString=CLIP(InputString)
ReturnString=GETINI('Custom',WorkString,WorkString,'.\Language.ini')
ELSE
ReturnString=CLIP(InputString)
END
RETURN(ReturnString)
Соответственно, чтобы вообще ничего не декларировать в окнах, нужно сделать еще одну функцию, возвращающую английские значения. А это нерационально (рутины много). Кроме того, потребует хранения английских значений в памяти (в файле, конечно, можно держать, но где гарантия, что файл не повредится?). А с реализорванной идеологие в солучае повреждения языкового файла ничего страшного не произойдет - будут работать английские значения.
===========================================
>
> RTFM. Делается через OVER.
================================
Ну, до OVER я еще не дошел. Не профессионал я как бы в Кларионе. К сожалению
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: Nick Tsigouro <nick@arsis.ru>
Кому: "clalist List Member" <clalist@Clarion.ru>
Написано: 2 сентября 2004 г., 11:45:10
Тема: Получение списка контролов {01} {01} {01} {01} {01} {01} {01} {01} {01} {01} {01} {01}
Файлы: <none>
--====----====----====----====----====----====----====----====----====----===--
Hi.
> -----Original Message-----
> From: ClaListAdmin@Clarion.ru [mailto:ClaListAdmin@Clarion.ru]On Behalf
> Of Igor Smirnov
> Sent: Wednesday, September 01, 2004 6:48 PM
> To: clalist List Member
> Subject: RE: Re[4]: Получение списка контролов {01} {01} {01} {01} {01}
> {01} {01} {01} {01} {01} {01}
>
>
> > > Дело в том, что это самое 'None' прописано в декларации окна. Боль
> >
> > Зачем? Ты же все равно будешь туда переведенную строку
> > вписывать. Совсем убери в декларации атрибут FROM.
> ========================================================
> Не могу убрать. Алгоритм выстроен так - во всех окнах и т.д., и т
Можешь. Непереведенные значения атрибута From для перевода ты берешь не из
окна.
>> ?RCMode_1{PROP:From}=GetLoc('None') & '!#0!' & GetLoc('Private') & '!#1!'
& GetLoc('Public') & '!#2'
> .п. задекларированы английские названия. То есть, английский язык
> интерфейса - основной.
На самом деле лучше за основу взять русский интерфейс. Просто по тому, что
руский перевод обычно занимает заметно больше места. Втиснуть потом меньшее
в большее проще, чем наоборот.
> А ели выбран другой язык (то есть вариант "читать названия из файл
> а"), тогда работает функция локализации.
Ну если так, то зачем ты проверяешь необходимость перевода в самой функции?
Твою ф-ию можно вызывать безусловно. Именно это я и предлагаю для FROM.
Еще проще - считать из ini атрибут целиком сразу на нужном языке:
?RCMode_1{PROP:From}= !
GETINI('Custom',0{Prop:Text} & '_RCMode1_PropFrom' &
InterfaceLanguage,'None!#0!Private!#1!Public!#2','.\Language.ini')
> И она (эта функция) работает так:
[...]
>
> Соответственно, чтобы вообще ничего не декларировать в окнах, нужн
Зачем такой экстремизм. Простые структуры (их большинство) пусть остаются, а
структурные, которые нужно для перевода разбирать на составляющие, м.б.
лучше и не декларировать в окне вообще, а просто собирать в тексте проги, из
переведенных составляющих, как собс-но у тебя и написано.
> о сделать еще одну функцию, возвращающую английские значения. А эт
> о нерационально (рутины много). Кроме того, потребует хранения анг
> лийских значений в памяти
> (в файле, конечно, можно держать, но где
> гарантия, что файл не повредится?).
8-() - а где гарантия, что файл БД или ехе-шник не повредится? Есть
опасения - ставь ЭЦП и предусматривай процедуру восстановления.
> А с реализорванной идеологие
> в солучае повреждения языкового файла ничего страшного не произойд
> ет - будут работать английские значения.
> ===========================================
> >
> > RTFM. Делается через OVER.
> ================================
> Ну, до OVER я еще не дошел. Не профессионал я как бы в Кларионе. К
> сожалению
ArrayInit Group
Byte(...) ! 1
Byte(...) ! 2
...
Byte(...) ! n
end
Array Byte,DIM(...),OVER(ArrayInit) ! кол-во эл-тов не больше n
WBR, Nick Tsigouro mailto:nick@arsis.ru
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Написал: ClaList(2)