Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Коллеги, наверное, вопрос детски, но все же.
Короче, задача - пробежаться по всем контролам окна и получить по каждому из них {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)
Ответить