Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Добрые люди! Несколько дней бьюсь с одной проблемой, решение где-то на поверхности, но в упор не вижу. Подгоняю рабочую программу на FPD26 под VFP9, решил до возможного минимума оставить старый код (больно не бейте). Читал все ветки на форуме насколько это бесполезное занятие, но всё же взялся, т.к. нужно.
Суть проблемы: здесь на файловом архиве взял код Евгения Гамза Функциональные клавиши как в Нортоне , идею немного переделал, и в принципе всё работает. За исключением одной ситуации. Если "кликнул" по кнопке один раз, программа перешла в другую форму/процедуру, значения кнопок приняли новые значения, - второй раз эта же кнопка не срабатывает, остальные срабатывают без проблем. Вернулся назад в предыдущую процедуру - кнопка рабочая. Возможно, это связано с какой-то особенностью кнопок на панели тулбара, я не очень в этом силён. Вот код этой подпрограммки:
Исправлено 5 раз(а). Последнее : segamel, 19.11.19 23:54 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
vk65 Сообщений: 402 Дата регистрации: 08.04.2008 |
|
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Не совсем понятно - зачем?! Т.е. в чем суть, чтобы вообще применять вот эти "Функциональные клавиши как в Нортоне"? Мне кажется, основная проблема - в изначально неверном подходе к "переводу программы на VFP". Т.е., вместо того, чтобы использовать для себя данное решение (несколько, мягко говоря, специфическое, на мой взгляд и непонятно для чего вообще нужное) - лучше просто для начала четко сформулировать для себя суть самой задачи: "Что конкретно хочется получить?" И думаю с большой вероятностью в результате окажется, что все можно решить каким-то иным образом, намного более простым. Поскольку различные сложности как раз чаще всего и возникают - от изначально неверной для себя формулировки задачи. Вдобавок с изначально путанным решением потом придется много мучиться. И зачем?! Когда можно сразу начать все делать более нормальным образом. В дальнейшем просто будет намного меньше проблем. Т.е. внчале нужно словесно, а еще лучше графически, набросать внешний вид желаемого пользовательского интерфейса и внимательно продумать, как наиболее оптимально он должен функционировать, по принципу нажал туда-то - получил то-то. Ну и затем уже заняться, по возможности неспеша, реализацией всего этого уже непосредственно в кодах. При этом надо учитывать - интерфейс в FPD и VFP - принципиально не могут быть абсолютно полностью одинаковы. Хотя при желании можно конечно получить что-то относительно близкое по функционалу. Но это уже потребует определенных усилий и дополнительного продумывания всех связей элементов. Если уж оно оправданно. Поэтому могу предложить - не копаться с проблемами чужих решений, а сделать все свое с нуля. Для чего - для начала продумать и четко сфориулировать свою задачу. а потом уже спрашивать-уточнять по ней какие-то возникающие неясности, которые неизбежно будут возникать. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 3 раз(а). Последнее : Crispy, 20.11.19 08:02 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Дополню Crispy.
Ну оставил старый код, что то заработало. А теперь смотри что работает плохо. Или нужно иначе. И от этих модулей FPD тебе нужен только функционал, т.е. что нужно сделать. А вот делать то нужно, вообще не глядя на старый код. Есть задача, ее надо правильно решить, на том что используешь. Если это UI, как упоминал уже Crispy, UI тут совсем другое, и лучше делать сразу правильно И так постепенно изменишь всю ПО, под vfp9. Но сразу надо писать не под старье, а под vfp9. |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Зря. Теперь чисто по коду: Цитата:Смотрим хелп по Alines() и думаем о необходимости сего куска кода. Цитата:Кнопки тулбара есть составляющие коллекции и потому все эти пляски с тучей макроподстановок... ------------------ Лень - это неосознанная мудрость. Исправлено 1 раз(а). Последнее : ssa, 20.11.19 10:05 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Подобный интерфейс с использованием этой подпрограммы "кнопки как в Нортоне", прописан по всей программе, а там под три сотни файлов, в VFP они выглядит криво, потому как просто прорисованы строкой внизу экрана через SAY. Поэтому не трогал эти кнопки, но попытался заменить SAY на тулбар. Примерно получилось, и все файлы переделывать не пришлось. Как говориться, если всё работает, лучше не трогай. Я бы так и поступил. Но закупают новые компы с лицензией на Вин_х64, ну и далее разные рабочие моменты, типа "ничего не знаю, сделай, чтобы работало". Если коротко, времени как всегда мало, юзеры требуют, чтобы всё было как раньше, малейшие изменения - верни как было. Руководство в суть не вникает, ему важно два варианта: работает - не работает. Если буду дальше этим заниматься, то конечно неспеша можно подумать,изучить и переделать. |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Спасибо, вникаю в суть. |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Это тот момент, когда не стал трогать старое За совет спасибо, изучу, этот кусок можно попробовать безболезненно переделать. Кусок тулбара взял из коллекции файлового архива, старый код, но хорошо подходил по задаче и интерфейсу. Исправлено 2 раз(а). Последнее : segamel, 20.11.19 11:46 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Так дальше то же самое старье, хоть и в применении к VFP. Предлагаю не заниматься ерундой и выкинуть все пляски с макроподстановками, научиться работать с объектами не через имя, а через ссылку, забыть про переназначения On key label, назначив их один раз, а ветвление делать уже в самих кнопках. ------------------ Лень - это неосознанная мудрость. |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Суть проблемы я понял, благодаря сообщению Igor Korolyov. Попробую применить.
|
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Могу порекомендовать вот это решение: forum.foxclub.ru Отлично работает на х64 системах. Плюс - что вообще ничего менять не надо. Т.е. просто нужно настроить эмулятор согласно всему описанному в теме, и можно запускать. При этом, если разместить программу в папке эмулятора, можно добиться вдобавок портируемости всего этого комплекса. Т.е. настроив для одной машины - можно простым копированием ставить на все другие. А тем временем постепенно написать заново аналог уже на VFP9. Это будет наилучшим вариантом для будущего сопровождения. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 2 раз(а). Последнее : Crispy, 20.11.19 12:23 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Пожалуй, соглашусь с братом Криспой. Гибридный монстр будет гораздо более худшим решением.
|
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> click кнопки нереентерабельны
> Click кнопки просто включает таймер, а сам завершается И проблема нерентерабельности снимается? |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Спасибо, раньше уже читал эту тему, т.к. понимал что рано или поздно время "Х" наступит. Попробую ещё потестировать vDosPlus, ни DOSBox, ни VirtualBox не подходит. К тому же на некоторых компах уже работают мои "переделки", и таблицы назад конвертировать не хочеться. Озвученную здесь проблему обходим тем, что кроме кнопок тулбара там есть возможность нажать соответствующий ON KEY LABEL, чем пока обходяться юзеры. К тому же думал сразу убить двух зайцев, и решить проблему использования genrep на Win7 где в окне ДОСа меняется кодировка после выхода из Word или Excel. Эту проблему пытались решить здесь, но я так понял, для FPD26 она не решаемая. Исправлено 1 раз(а). Последнее : segamel, 20.11.19 15:35 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Мысля отсюда, но протестировать ещё не успел. В теме отписываются, что работает. |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
По-моему, это просто механизм непотери нажатия клавиш, а выполняться действия (в таймере, заряженном кнопкой) будут все равно последовательно. Если таймер запустил модальную форму, то кнопка зарядит свой таймер с действием, но когда экспериментировал, то таймер работал не всегда, как раз в момент запуска всяких монопольных процедур иногда не работал. Я к тому, что истиную реентерабельность (вклинивание выполнения процедуры между строками выполнения другой процедуры) не всегда можно достичь, мтк...
Доб. Забыл добавить, что реентерабельность должна включать независимость, непорчу, окружения (набора видимых переменных), т.н. надо уметь писать процедуры максимально локально, не меняя и не портя окружение (например SELECT()/ALIAS() )... Я так, для себя болше, подбадриваю, это просто специфика фокса, в си-шарпе, наверное, вообще не имеет подобия... хотя это просто типичный синтаксис (семантика ли, хз в чем разница) с WITH. Исправлено 1 раз(а). Последнее : of63, 20.11.19 20:24 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Проблема с шрифтом решамая. И к слову сказать, в Win 8.1 и Win10 такой проблемы вообще нет. В Win 7 решается так. Надо установить дополнительные растровые шрифты в Windows 7, и установить в запускаем ом значке растровый шрифт типа 12х27 или какой-то из такого размера - чтобы окно приложения помещалось без прокруток. Файл для скачивания есть где-то на форуме и есть у Crispy - он этот файл готовил/редактировал.
|
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
segamel Автор Сообщений: 20 Дата регистрации: 27.04.2011 |
Да я знаю, что это проблема только Win7. На некоторых компьютерах ещё стоит семёрка. Не знал, что есть решение, поищу. Исправлено 1 раз(а). Последнее : segamel, 20.11.19 17:51 |
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
|
Re: Проблема с повторным нажатием кнопки панели инструментов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Они и должны исполняться последовательно нет в этом проблемы. проблема в том, что пока в стеке вызовов висит cmd.click - то нажатия на эту кнопку НЕ вызывают срабатывания данного метода ещё и ещё раз. По сути кнопка блокируется. Не требуется тут никаких параллельных/многопоточных решений, достаточно "освободить" кнопку. Реентерабельность это не "вклинивание выполнения". Это лишь возможность сколько угодно раз запускать один и тот же код (метод, процедуру) не испытывая при этом проблем - обычно повторные входы в код возникают из-за многопоточности, но никто не запрещает использовать рекурсию, или, как в данном случае, "подвесить" обработчик на DO FORM или ином модальном действии. При этом позволив фоксу продолжать "обрабатывать UI" - соответственно дав возможность ещё раз войти в этот же самый обработчик. В данном случае не совсем реентерабельность имеется в виду, но так вроде бы проще описать... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |