Вызов меню свойств индикатора. - страница 5

 

еще такой вариант - индюк берет свойства из глобальной переменной

жмем F3 и вбиваем нужные цифры

 
sabluk писал (а) >>

еще такой вариант - индюк берет свойства из глобальной переменной

жмем F3 и вбиваем нужные цифры

Не понял. А если в свойствах более 200 переменных?

Просто быстро нужно меню свойств конкретного индикатора. Просто сервис.

 
Zhunko писал (а) >>

..просто быстро нужны свойства индикатора для ручного изменения параметров.

Не очень понял, где Вы используете приведенную выше функцию для вызова индикатора? Если в скрипте, то весь скрипт

фактически состоит из одной функции, в индикаторе или советнике - не представляю, как ее можно использовать.

Тем более, что есть большие сомнения, будет ли она вообще работать в индикаторе.

 
Zhunko писал (а) >>

Не понял. А если в свойствах более 200 переменных?

Просто быстро нужно меню свойств конкретного индикатора. Просто сервис.

Вадим  привет, с большим кол параметров конечно сложнее

но если мне надо менять параметры на ходу - не перегружая индикатор 

пишу через гобаьные переменные и использую F3

очень удобно

конечно можно еще хранить все переменные в INI файле - и юзать его через API (у Игоря Кима где есть тут в code base  пример работы с API )

а в файл вгонять переменные как то  - можно в принципе организовать изменение в INI файле на ходу

а в индикаторе добавить флаг  при изменении которого будет  перечитываться INI файл,

после  изменения параметра или все майссы параметров.

( флаг можно менять например анализируя  и запоминая последнюю даты время и двлину INI файла )

т е автоматически взводить  флаг тоже можно

---

останется лишь сложность с интерфейсом который будет менять эту  кучу параметров

если расчет параметров происходит автоматом - то проблема отпадает - если ввод руками то увы!

 
granit77 писал (а) >>

Не очень понял, где Вы используете приведенную выше функцию для вызова индикатора? Если в скрипте, то весь скрипт

фактически состоит из одной функции, в индикаторе или советнике - не представляю, как ее можно использовать.

Тем более, что есть большие сомнения, будет ли она вообще работать в индикаторе.

Это не сложно. Индикатор через глобальную переменную передаёт данные о системном дискрипторе и имени индикатора в зацикленный скрипт, а он в свою очередь открывает окно со свойствами индикатора.

 
YuraZ писал (а) >>

Вадим  привет, с большим кол параметров конечно сложнее

но если мне надо менять параметры на ходу - не перегружая индикатор 

пишу через гобаьные переменные и использую F3

очень удобно

конечно можно еще хранить все переменные в INI файле - и юзать его через API (у Игоря Кима где есть тут в code base  пример работы с API )

а в файл вгонять переменные как то  - можно в принципе организовать изменение в INI файле на ходу

а в индикаторе добавить флаг  при изменении которого будет  перечитываться INI файл,

после  изменения параметра или все майссы параметров.

( флаг можно менять например анализируя  и запоминая последнюю даты время и двлину INI файла )

т е автоматически взводить  флаг тоже можно

---

останется лишь сложность с интерфейсом который будет менять эту  кучу параметров

если расчет параметров происходит автоматом - то проблема отпадает - если ввод руками то увы!

Юра, ну и что это будет?! Более 200 параметров в ини-файл или глобальную переменную? Их в красивом упорядочном виде в этом микроокошке особо сразу не найдёшь, а в каком-то файле, тем более замучаешься искать.

Это же исследовательский комплекс. Там постоянно надо что-нибудь менять. Надо сократить количество нажатий на кнопки.

 
Zhunko писал (а) >>

Ilnur, по мотивам Вашего скрипта для вызова свойств индикатора написал функцию.

Функция работает, но строка с функцией закрывающей окно свойств индикатора работает странно.

Специально протестировал Вашу функцию. Вызывал её при различных настройках окна и разных количествах индикаторов. Однако ни разу не обнаружил странное

поведение функции, которое Вы описываете. Опишите более подробно где (в теле скрипта, индикатора и т.д.)  и как (однократно, по таймеру и т.д.) Вы вызываете эту функцию.

Возможно я смогу помочь.


P.S. Посмотрите код скрипта IndicatorPropertyByName, который я выложил в этой ветке. Там реализован вариант поиска индикатора по имени без вызова окна свойств.

Возможно он больше Вам подойдет. Единственное, я не тестировал его в боевых условиях. Но если возникнут трудности, я постараюсь ответить на все вопросы.

 

Ilnur, спасибо за внимание к этой теме, я разобрался в чём дело. И мне от этого не легче.

Вы не сможете повторить этот эффект. Для этого надо иметь один индикатор с возможностью изменять его короткое имя в окне.

Т.е. в списке у меня все индикаторы имеют одно имя. Получается, что старая, мной опубликованная функция, для последнего индикатора открывала окна свойств всех предыдущих индикаторов. А функция закрывающая окно не могла завершиться потому, что появлялись всё новые одинаковые окна. Хотя это тоже не понятно. Системные дескрипторы у них должны быть разные.

Новый вариант функции, по Вашему совету из поста выше, открывает свойства только первого найденного индикатора. Это понятно. Она же не знает, что они все одинаковые.

Надо на уровень глубже пройти. Надо посмотреть строку с префиксом индикатора в свойствах индикатора. По ней идентифицировать нужный индикатор.

Ilnur, поможете?

 


Zhunko, теперь понятно в чем проблема.


Структура окна свойств индикатора представляет собой набор независимых окон. Каждая вкладка ("Общие", "Входные параметры", "Цвета" и т.д.) является диалоговым окном.

Основная проблема в данном случае получение системных дескрипторов этих вкладок. WinAPI функции GetLastActivePopup() и GetDlgItem() в данном случае не подходят.

Соответственно без дескриптора нет доступа к списку свойств индикатора.


Может быть в данном случае нет необходимости пытаться решить задачу средствами WinAPI. Если у Вас в коде задается строка с префиксом, по которому различаются одноименные

индикаторы, то можно создавать глобальную переменную с таким именем. Значение переменной задавать равным номеру запускаемого индикатора. Затем при поиске по значению

глобальной переменной определять каким по счету запущен интересуемый индикатор.

 
Ilnur писал (а) >>


Zhunko, теперь понятно в чем проблема.


Структура окна свойств индикатора представляет собой набор независимых окон. Каждая вкладка ("Общие", "Входные параметры", "Цвета" и т.д.) является диалоговым окном.

Основная проблема в данном случае получение системных дескрипторов этих вкладок. WinAPI функции GetLastActivePopup() и GetDlgItem() в данном случае не подходят.

Соответственно без дескриптора нет доступа к списку свойств индикатора.


Может быть в данном случае нет необходимости пытаться решить задачу средствами WinAPI. Если у Вас в коде задается строка с префиксом, по которому различаются одноименные

индикаторы, то можно создавать глобальную переменную с таким именем. Значение переменной задавать равным номеру запускаемого индикатора. Затем при поиске по значению

глобальной переменной определять каким по счету запущен интересуемый индикатор.


Не выйдет. Индикаторов может быть много и не только моих. Как они поймут, что они не одни в окне?

Нужен способ не завязанный на сам индикатор.

Идентификацию индикаторов в одном окне (протокол их общения между собой) только, что закончил. Работает! Одно удовольствие смотреть на это. Уже месяц разрабатывал его.

Но даже с его помощью это сделать нельзя. Мои программы не могут посчитать другие индикаторы.

Причина обращения: