Старые приемы | |
---|---|
boba Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Была проведена серьезная реорганизация базы данных,
менялись размерности полей и прочее. Пришлось влезать в чужие проекты , написанные ушедшими коллегами с использованием copy to, total, relation Текстов немеряно, меню самописное, документации ноль. Постоянные установки set step on , необходимость проверять, что лежит в открываемых грязных таблицах после этих самых copy to, total. Всех тах мест десятки , если не сотни. Форм море ( и модальных), хотя они отличаются мизером, те никакого ООП, зато полно параметризации за счет & Замучился отлаживаться и править, и вспомнил то, чему учился на заре работы с фоксом А именно, возможности делать brow на открытые алиасы. При работе модальной формы особо в командное окно не пойдешь, да и алиасов открытых несколько, нужно выбрать нужный, посмотреть и вернуться назад. Узнать имя файла формы на экране, поставить где попало set step on на лету, меню то задачи, а не фоксовое, узнать источник алиаса итд Тривильщина, но в описываемом случае весьма полезная, когда толком не знаешь, что ищешь в чужой программе. В головной программе написал. Разборка авгиевых конюшен ускорилась в разы. ON KEY LABEL ALT+F12 do showformname ON KEY LABEL ALT+F11 do makebrow ON KEY LABEL ALT+F10 do showdbf ON KEY LABEL ALT+F9 DEBUG _____________________ function makebrow lcoldalias = Alias() jklj = Aused(_www) _capt = '' For jjjj = 1 To jklj _capt = _capt + _www[jjjj,1] + ' ' Endfor _capt = Alltrim(_capt) lctabl = Inputbox('Выбери алиас',_capt, IIF(not EMPTY(lcoldalias),lcoldalias,'')) If Not Empty(lctabl) And Used(lctabl) Else lctabl = Alias() Endif If Not Empty(lctabl) Select (lctabl) Browse Endif If Not Empty(lcoldalias) Select (lcoldalias) Endif ************************************ function showdbf IF NOT EMPTY(ALIAS()) MESSAGEBOX(ALIAS()+'-'+dbf(alias()),'') endif ********************************************************* function showformname IF TYPE('_screen.activeform') = 'O' = MESSAGEBOX('Ôîðìà '+SYS(1271, _screen.activeform)) endif |
Re: Старые приемы | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Если внутри функций не отменять (а в конце восстанавливать) ту комбинацию (а лучше все), которая вызвала эту функцию, то всегда есть шанс получить ошибку:
Конечно, при отладке это не слишком важно, но всё же... PS Я как-то "внедрялся" в работу чужого EXE таким же способом - автор забыл в начале проги гасить ON KEY LABELы, и я задавал их снаружи. |
Re: Старые приемы | |
---|---|
boba Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Я собственно в начале спросил все
on key что там были и выбрал отсутсnвующие в brow до него запомнил алиас, и если он был, возвращался к нему. |
Re: Старые приемы | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Я писал о сбросе клавишной комбинации, вызвавшей функцию, в начале этой функции и ее восстановлении в конце, то есть командах:
|
Re: Старые приемы | |
---|---|
Каратаев Автор Сообщений: 3977 Откуда: Алматы Дата регистрации: 04.12.2001 |
Кстати, полезная штука иногда даже в своих программах покопаться. Так сказать, вычислить "косяки".
Только вот у меня по ON KEY LABEL не прокатит, поскольку в некоторых формах эти комбинации клавиш используются. Поэтому весь код вынес в тулбар, который активируется только под моим логином и паролем, т.е. только для меня. И натолкнулся ещё на то, что список открытых алиасов в некоторых случаях не вмещается в надпись на Inputbox... Немного переделал и вывожу их (алиасы) в меню (это код кнопки тулбара):
------------------ Никогда не бывает настолько плохо, чтобы не могло быть еще хуже. Исправлено 1 раз(а). Последнее : Каратаев, 29.12.21 10:10 |
© 2000-2024 Fox Club  |