![]() |
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум | ![]() |
![]() |
Лисоводы всех стран, объединяйтесь !!! |
Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
В решениях выложено моё первое решение. Большая просьба оценить/осудить. Если возможно посмотреть код и рассказать в чем я не прав в плане стиля. Ну и вообще нужны ли подобные средства разработчику.
Выражаю благодарности старожилам форума, без них я бы писал еще хуже ![]() Отредактировано (28.11.05 11:45) ------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Vladimir Sklyar Сообщений: 1368 |
Hello, Zakharov_slava!
You wrote on Mon, 28 Nov 2005 11:44:01 +0300 (MSK): Zs> В решениях выложено моё первое решение. Большая просьба Zs> оценить/осудить. Если возможно посмотреть код и рассказать в чем я не Zs> прав в плане стиля. Ну и вообще нужны ли подобные средства Zs> разработчику. Выражаю благодарности старожилам форума, без них я бы Zs> писал еще хуже ![]() www.superbasis.de With best regards, Vladimir M Sklyar. E-mail: Vladimir.Sklyar@gmail.com ------------------ С уважением Владимир. ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
Мне понравилось. Особенно поиск. Если б раньше узнал может свою не делал бы. А теперь отступать некуда... Позади Москва
![]() ------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Igor Korolyov Сообщений: 34000 |
Hi slava!
Я как-то я попробовал немного в PM поработать, но пришёл к выводу, что всяко проще запустить нужное число копий фокса и переключаться между ними (если надо одновременно работать), или просто перезапустить всю среду (если последовательно надо работать с разными проектами). В общем для себя я пользы в такого рода утилитах как-то не нашёл... ------------------ WBR, Igor ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Vladimir Sklyar Сообщений: 1368 |
Hello, Igor!
You wrote on Mon, 28 Nov 2005 16:52:03 +0300 (MSK): IK> Я как-то я попробовал немного в PM поработать, но пришёл к выводу, что IK> всяко проще запустить нужное число копий фокса и переключаться между IK> ними (если надо одновременно работать), или просто перезапустить всю IK> среду (если последовательно надо работать с разными проектами). В общем IK> для себя я пользы в такого рода утилитах как-то не нашёл... Для меня он чисто как справочник проектов - т.е. нада поработать над конкретным проектом - выбрал из списка и работай. Вот щас под 9й (не работает РМ под 9й) сидишь кнопаешь в коммандном окне, пока перейдешь, пока запустишь, столько лишних движений делаешь, пока долезешь до проекта так и забудишь чего от него хотел. Если одновременно работать с несколькимы проектами, то естественно легче держать несколько копий фокса и работать. Единственное что мне не нравиться - то что команды коммандного окна, запоминаються только последнего фокса. With best regards, Vladimir M Sklyar. E-mail: Vladimir.Sklyar@gmail.com ------------------ С уважением Владимир. ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Igor Korolyov Сообщений: 34000 |
Hi Vladimir!
Цитата:Ну не знаю, тут просто порядок на диске рулит ![]() есть ![]() Цитата:А в чём принципиальная разница между File\Open или даже MODIFY PROJECT (+ MRU который можно по размеру подкрутить) в командном окне? А собственно "настроечные" под проект действия - это работа для ProjectHook - IMHO это самое то ![]() А PM уже сам по себе требует чтобы его запускали из одной определённой папки (чтоб конфиг нужный хватался) - т.е. просто по pjx в FAR уже не кликнешь (не ну кликнуть то можно, но вот PM тогда и не запуститься сам - а руками его пускать - радости мало)... Хотя ВООБЩЕ идея добавляемых тулзов - это неплохая идея - просто обычно это бывает как-то связано с используемым каркасом (пусть даже и самописным). Вот чего мне не нравится - так это полностью меню перекоряживать - ну добавил своё подменю, максимум два - и ограничься этим - но бывает что заносит сильно ![]() ------------------ WBR, Igor ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
piva Сообщений: 18600 Откуда: Курган |
Не уменя только переключатель между проектами - тем больее для каждой версии фокса свои настройки идут. Ну и управление проектом - просто я уже привык и мне чужие тулзы не очень нужны
------------------ Часто бывает так, что есть над чем задуматься, а нечем. ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
Igor Korolyov писал:
Цитата:Я горд. Мой тулбар вылезет если кликнуть на pjx ![]() Но меня более интересует отношение к стилю написания. На работе все пишут еще отвратительней и конструктивной критики от них ожидать невозможно. Я не прошу им пользоватся, так взглянуть на код. ------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
piva Сообщений: 18600 Откуда: Курган |
Добавляю проект - открываю кнопкой - появляется окно проекта давлю кнопку "i" вылезает ошибка - Ckass Definition not found
thisform.mainform = CREATEOBJECT("mainform",this.parent.homepath) Картиник какие-то - большие я бы сказал Картинка для проекта - почему только .ico ? Я ими не пользуюсь При создании файла хранения данных данных пишешь FREE и чуть далее BEGIN TRANSATION - это что только для 9-ки ? Транзакции для свободных таблиц ? Грид как всегда с таурной рамкой, SplitBar тут необходим ? И вообще тут или ListBox или ListView был бы более уместен особенно при испозльзовании картинок проектов. Частво в коде повторятся this. this. this. thisform. thisform. thisform. thisform. Ситуаций много всяких в жизни бывает Clear All и твоего манагера проектов как не бывало ![]() Хватит пока ? ![]() Вдогонку - окно упраления проектами - ContolBox=.F. а окно можно ресайзить ![]() Отредактировано (29.11.05 11:45) ------------------ Часто бывает так, что есть над чем задуматься, а нечем. ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
СПАСИБО БОЛЬШОЕ!
![]() Наверно я дурак, но как радостно когда меня так критикуют ![]() Кстати первый раз слышу что транзакции не работают со свободными таблицами. У нас есть задачи гшде еще в 5 - ке в свобдных таблицах использовались транзакции ![]() Отредактировано (29.11.05 12:21) ------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Igor Korolyov Сообщений: 34000 |
Hi slava!
1) Цитата:Конечно нет - ты же не думаешь что я в КАЖДЫЙ config буду прописывать _STARTUP ![]() установки фокса, то будет работать до тех пор, пока в папке из которой я запускаю фокс (т.е. где расположен тот pjx или prg или другой файл открываемый в фоксе из проводника или FAR) не будет своего config.fpw - я именно про это и говорил вообще-то. 2) Обработка ошибок отсутствует как класс - это минус. 3) Set Classlib я бы вообще не использовал, заменив просто CreateObject() на NEWOBJECT() - поскольку с большой долей уверенности можно сказать, что в какой-нить из "программ настройки среды" окажется SET CLASSLIB без ADDITIVE или вообще CLOSE ALL какой-нить и тем самым отключит библиотеку. Или ещё хуже - возникнет конфликт имён классов - а ты назвал один из классов mainform - сам подумай какой шанс где-то ещё встретить такое имя ![]() Ну и наконец просто возникает ошибка при попытке "повторно" подключить библиотеку. Ну про CLEAR ALL Вадим уже сказал ![]() самого объекта, то он выживет (не умирает объект пока исполняется его метод) 4) IF USED("Projinf") USE IN Projinf ENDIF USE IN SELECT("Projinf") ![]() что НЕЛЬЗЯ так считать ![]() версиям фокса ограничивай), либо GUID (тока ради бога не самопальный, а тот самый "длинный"). 6) С алиасами беспорядок - ты же в DDS работаешь, а форма переключает текущий алиас, но не восстанавливает его - я бы вообще просто добавил везде (в EOF(), CURSORSETPROP(), TABLEUPDATE() и т.п. параметром имя курсора) - хотя-бы порядку для. 7) Для FREE таблиц транзакции фокс никогда не поддерживал, и даже в VFP9 где это добавили, транзакционную поддержку надо включать ЯВНО через функцию MAKETRANSACTABLE(lcAlias), ну проверив до того что она ещё не ISTRANSACTABLE(lcAlias)... Единственное НО - это файловые транзакции Novell - при помощи специальной библиотеки можно организовывать транзакции, но только для файлов расположенных на сервере под управлением Novell. Впрочем особого смысла в транзакциях в твоём случае нет - они нужны для согласованного изменения связных данных. У тебя же всего одна таблица и записи там независимы друг от друга - т.е. достаточно только буферизации. А вот что TableUpdate() может .F. вернуть - это надо контролировать! Впрочем про отсутствие Error Handling я уже писал... 8) Кнопки которые не работают в текущий момент не блокируются - например при пустом списке не блокируется "Удалить" и "Изменить" - можно вызвать форму правки для "фиктивной" записи которая на EOF() стоит ![]() 9) Не проверяется ЧТО написано в полях ввода на форме редактирования - я бы вообще те поля которые содержат папку или файл не отдавал на редактирование, оставив только выбор через диалоги. 10) Возможно стоит для более свежих версий фокса подключить более нормальный GETDIR() - т.е. добавить ещё параметров в точке вызова. 11) А где SET DELETED ON? И не надо на конфиг кивать ![]() всегда OFF - т.е. тебе самому надо заботится чтоб его когда надо выставить, а потом вернуть на место ![]() 12) Да ещё - для работы с БОЛЬШИМ количеством проектов конечно такой подход не годится - уже с десятком кнопок трудно разобраться, а если их будет заметно больше, то и подавно запутаешься - да и не влезет "очень много" кнопок в задоканный тулбар... По стилю: - Обычно методы выделяют круглыми скобками - т.е. Click() - красиво и сразу видно что это метод а не свойство. - Для переменных (кроме как слева от знака равно, ну или где ОДНОЗНАЧНО по синтаксису не может быть имени поля) стоит ставить префикс m. - мало ли какие у меня поля есть в открытых курсорах! - Переменные лучше всегда явно декларировать - как LOCAL или PRIVATE (хотя для последних область применения довольно ограничена). - Валидация в 2 шага - ведь можно СРАЗУ оба условия проверить. и в одном MessageBox показать что есть 2 проблемы - а не заставлять 2 раза "Принять" жать. чтобы увидеть что допущено 2 ошибки. При этом вовсе не обязательно фокус на "неправильный" контрол кидать - можно просто цветом его выделить (и при этом можно проверку перенести пораньше! Т.е. до нажатия на "Принять" уже будет видно что тут проблемы). - Именовать объекты осмысленно - это очень хорошо, но почему тогда не все? Ладно ещё колонки в гриде (и надписи, если к ним нет обращений из программы), но кнопочки тоже ведь есть непоименованные... - Есть такая народная мудрость - не писать "реальный" код в обработчиках событий - т.е. не в Click надо описывать что должно происходить для удаления записи - а в отдельном методе, который этот самый Сlick (а заодно и ещё бог знает кто - меню, хоткей, или вообще пользователь из командного окна) и вызывает. Для примера обычно советуют изучить ClassBrowser - он допускает очень широкое "внешнее" управление самим собой, и для этого совсем не надо вызывать методы Click его кнопок ![]() - Мне кажется что вместо того чтобы бороться с кнопками закрытия окна, надо просто перехватывать соответствующее событие. Т.е. "крестик" пускай остаётся на своём месте ![]() - Для кнопок "отмена", "выход" и подобных имеет смысл назначать Cancel = .T. - чтоб по Esc можно было их активировать. А для формы выбора чего-то из списка иногда полезно и Default = .T. для кнопки осуществляющей выбор элемента (но тут могут вмешаться тупые пользователи - некоторых пугает такая функциональность). - Если ты предусмотрел авто-создание таблицы при её отсутствии. то наверное лучше после CREATE TABLE её ПЕРЕОТКРЫТЬ - чтобы далее она оставалась Shared а не EXCLUSIVE как сейчас оно у тебя. Я уверен что через пару дней ты и сам забудешь что реально табличка то иногда бывает и EXCLUSIVE открыта ![]() - Не забываем про TabOrder ![]() если оставлять "на потом", то можно и забыть - а впечатление небрежный порядок обхода производит плохое. - Не забываем паковать перед распространением библиотеку классов! Зачем лишний мусор тягать. ------------------ WBR, Igor ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
Игорь вы не представляете как я Вам за такой разбор полетов благодарен. Я начал изучать фокс когда перешел на работу где я и ныне работаю (уже месяцев 7). и Начал изучать с того что вел задачу сделаную не мной. Я бы не стану описывать стиль програмирования в этих задачах. Достаточно того что в некоторых поля в главных таблицах именуются по по двум буквам (например фамилия исполнителя fi и пр.) a переменные обявляется (цитата):
Publ a,b,c,d,e,f,g,h,j,k и не удаляются после, в общем жуть. Подсмотреть нормальный код времени и возможности действительно мало. Беру стиль из того что смотрю в цитатах с форума, и FAQ. Я не пытаюсь оправдыватся просто хочу показать что Ваш ответ (как и ответ piva) действительно очень и очень ценны. P.S. Как приятно были удивлены мои коллеги (опыт работы некоторых до 10 лет) когда узнали что классы можно паковать... ------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону |
вот это да!
![]() ![]() маленький проект может сильно раздуть Точно так же надо паковать и базы данных, если в них редактируют курсоры, например. ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Zakharov_slava Автор Сообщений: 2022 Откуда: Алматы |
Они создавали новый vcx и перекидывали туда все старые классы...
------------------ Требуется секретарша со знанием языка... ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Igor Korolyov Сообщений: 34000 |
Hi Zakharov_slava!
Ну что ж по сути PACK это и есть создание новой таблицы, копирование туда "живых" (не DELETED()) записей, потом "убиение" исходной таблицы и переименование "новой" под старое имя... Правда всё это одной командой ![]() P.S. Стиль - это такая тонкая вещь ![]() работоспособные программы и с "Publ a,b,c,d,e,f,g,h,j,k" - а другой даже при самом "правильном" и "идеологически выдержанном" подходе не напишет даже телефонного справочника ![]() Просто для большого коллектива - если стиль у всех разный, то написать совместно программу практически нереально - тут уж по любому идёт диктат одного человека (и его стиля). ------------------ WBR, Igor ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
RusMikle Сообщений: 715 Откуда: Muenster |
Igor Korolyov писал(а):
Цитата:я его в своё время и делал для того чтоб не из фара или ещё откуда проекты пускать а из списка со всеми настройками пускать. Если хочется удобства просто запускай pm.app из фара или сделай иконку на десктопе или ещё где на pm.app, фокс стартанет уже с ним автоматом. Если хочется что б какой то проект открывался автоматом при этом есть и такая установка в свойствах проекта. Сия идея проверена уже давно и не только мной а большим коллективом программеров, были разные варианты но сошлись все на этом. PM стоит уже поставить только для того чтоб просто быстро запускать проект не лазя по папкам и не выискивая pjx файл. Хочешь в своём окне каждый проект - пожалуйста PM тому не помеха, только помощь ![]() ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
Igor Korolyov Сообщений: 34000 |
Hi RusMikle!
Проблема в том, что надо не просто настройки делать, а запускать саму программу (чтобы создавался goApp и иже с ними) - и с этим замечательно справляется ProjectHook. А вот "перегрузка" весьма нетривиальна, и для своего-же спокойствия я предпочитаю полностью закрыть фокс, прежде чем переходить к другому проекту... P.S. Не претендую на знание какой-то скрытой истины, просто делюсь своим опытом работы с несколькими проектами... ------------------ WBR, Igor ![]() |
||
Re: Тулбар для работы с большим кол-м проектов | |||
---|---|---|---|
RusMikle Сообщений: 715 Откуда: Muenster |
Igor Korolyov писал(а):
Цитата:для этих целей там есть скрипты к каждому проекту, что хочешь то и создавай и при старте проекта и при выходе из него, и.т.п. а перегружать фокс под каждый проект не вижу никакой необходимости CLEAR ALL все прекрасно чистит ![]() |
||
© 2000-2021 Fox Club  |