C-4: Пробовал. Форма действительно проваливается назад, но делает это самым безобразным образом, т.е. проваливается даже за бары. А задача несколько другая, нужно просто что бы текст отображался в форме, при этом сама форма была поверх графика и других форм.
Нужно просто учитывать порядок создания графических объектов. Те, что должны быть ниже, нужно создавать в первую очередь.
tol64: Нужно просто учитывать порядок создания графических объектов. Те, что должны быть ниже, нужно создавать в первую очередь.
Да, это первое о чем я подумал. Менял порядок - результат тот же. Но чудес не бывает. Хотя сейчас взял рабочий проект и попытался в нем разместить OBJ_EDIT - он заработал нормально, т.е виден над формой. В общем чертовщина какая-то. Ясно, что я что-то не учел или забыл. Но все-таки хотелось бы разобраться, дабы не наступать на эти грабли в следущий раз. Вот код OnInit() для теста:
Да, это первое о чем я подумал. Менял порядок - результат тот же. Но чудес не бывает. Хотя сейчас взял рабочий проект и попытался в нем разместить OBJ_EDIT - он заработал нормально, т.е виден над формой. В общем чертовщина какая-то. Ясно, что я что-то не учел или забыл. Но все-таки хотелось бы разобраться, дабы не наступать на эти грабли в следущий раз. Вот код OnInit() для теста:
В таком случае нужен обработчик объектов, чтоб учёт что создаётся и в каком порядке был в одном месте, тогда не будет накладок что одна функция создаёт это вторая это, и смена вызова функций меняет порядок.
Инфо для MQ. В справочнике для OnTimer есть "... на получение функцией EventSetTimer()...". Надо бы ещё дописать "... или EventSetMillisecondTimer()...".
Все события обрабатываются одно за другим в порядке поступления. Если в очереди уже есть событие NewTick либо это событие находится в состоянии обработки, то новое событие NewTick в очередь mql5-программы не ставится. Аналогично, если в очереди mql5-программы уже находится событие ChartEvent или такое событие обрабатывается, то новое событие такого типа не ставится в очередь.
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Набросал эксперт для проверки... Получилось что не зависимо от того, есть в очереди событиеChartEvent или нет, обработчик события ChartEventвызывается столько раз, сколько я его генерирую.
Это отлично, но по-моему нужно править справку… Или я не прав?
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Набросал эксперт для проверки... Получилось что не зависимо от того, есть в очереди событиеChartEvent или нет, обработчик события ChartEventвызывается столько раз, сколько я его генерирую.
Это отлично, но по-моему нужно править справку… Или я не прав?
Это касается лишь случая переполнения очереди, если очередь переполнена то событие тип которого уже есть в очереди не ставиться.
если же очередь не переполнена (а длинна очереди навскидку 1024) то все события встают на обработку.
paladin800: Инфо для MQ. В справочнике для OnTimer есть "... на получение функцией EventSetTimer()...". Надо бы ещё дописать "... или EventSetMillisecondTimer()...".
Тогда все будут выставлять миллисекундный таймер, даже если этого и не надо...
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Не ставятся только CHARTEVENT_MOUSE_MOVE и CHARTEVENT_CHART_CHANGE. Т.е. только для этих событий ChartEvent есть ограничение "не более одного в очереди".
Пробовал. Форма действительно проваливается назад, но делает это самым безобразным образом, т.е. проваливается даже за бары. А задача несколько другая, нужно просто что бы текст отображался в форме, при этом сама форма была поверх графика и других форм.
Нужно просто учитывать порядок создания графических объектов. Те, что должны быть ниже, нужно создавать в первую очередь.
Да, это первое о чем я подумал. Менял порядок - результат тот же. Но чудес не бывает. Хотя сейчас взял рабочий проект и попытался в нем разместить OBJ_EDIT - он заработал нормально, т.е виден над формой. В общем чертовщина какая-то. Ясно, что я что-то не учел или забыл. Но все-таки хотелось бы разобраться, дабы не наступать на эти грабли в следущий раз. Вот код OnInit() для теста:
Да, это первое о чем я подумал. Менял порядок - результат тот же. Но чудес не бывает. Хотя сейчас взял рабочий проект и попытался в нем разместить OBJ_EDIT - он заработал нормально, т.е виден над формой. В общем чертовщина какая-то. Ясно, что я что-то не учел или забыл. Но все-таки хотелось бы разобраться, дабы не наступать на эти грабли в следущий раз. Вот код OnInit() для теста:
В таком случае нужен обработчик объектов, чтоб учёт что создаётся и в каком порядке был в одном месте, тогда не будет накладок что одна функция создаёт это вторая это, и смена вызова функций меняет порядок.
такой баг сложно отловить, и даже предусмотреть.
Всем здравствуйте!
В справке есть вот такой абзац:
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Набросал эксперт для проверки... Получилось что не зависимо от того, есть в очереди событие ChartEvent или нет, обработчик события ChartEvent вызывается столько раз, сколько я его генерирую.
Это отлично, но по-моему нужно править справку… Или я не прав?
Всем здравствуйте!
В справке есть вот такой абзац:
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Набросал эксперт для проверки... Получилось что не зависимо от того, есть в очереди событие ChartEvent или нет, обработчик события ChartEvent вызывается столько раз, сколько я его генерирую.
Это отлично, но по-моему нужно править справку… Или я не прав?
Это касается лишь случая переполнения очереди, если очередь переполнена то событие тип которого уже есть в очереди не ставиться.
если же очередь не переполнена (а длинна очереди навскидку 1024) то все события встают на обработку.
Это касается лишь случая переполнения очереди, если очередь переполнена то событие тип которого уже есть в очереди не ставиться.
если же очередь не переполнена (а длинна очереди навскидку 1024) то все события встают на обработку.
Понял. Спасибо :)
PS: В вышеприведенном эксперте больше 1000 в очередь поставить не получилось.
Инфо для MQ. В справочнике для OnTimer есть "... на получение функцией EventSetTimer()...". Надо бы ещё дописать "... или EventSetMillisecondTimer()...".
Всем здравствуйте!
В справке есть вот такой абзац:
Т.е. если в очереди событий есть ChartEvent – второй раз в очередь оно вставать не должно. Не тут то было :)
Тогда все будут выставлять миллисекундный таймер, даже если этого и не надо...