for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Обсуждаем проекты
  

Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 28.11.05 11:44:10
В решениях выложено моё первое решение. Большая просьба оценить/осудить. Если возможно посмотреть код и рассказать в чем я не прав в плане стиля. Ну и вообще нужны ли подобные средства разработчику.
Выражаю благодарности старожилам форума, без них я бы писал еще хуже



Отредактировано (28.11.05 11:45)


------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Vladimir Sklyar

Сообщений: 1368
Дата: 28.11.05 13:09:55
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




------------------
С уважением Владимир.
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 28.11.05 15:26:50
Мне понравилось. Особенно поиск. Если б раньше узнал может свою не делал бы. А теперь отступать некуда... Позади Москва




------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Igor Korolyov

Сообщений: 34000
Дата: 28.11.05 16:52:31
Hi slava!

Я как-то я попробовал немного в PM поработать, но пришёл к выводу, что всяко
проще запустить нужное число копий фокса и переключаться между ними (если
надо одновременно работать), или просто перезапустить всю среду (если
последовательно надо работать с разными проектами). В общем для себя я
пользы в такого рода утилитах как-то не нашёл...




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Vladimir Sklyar

Сообщений: 1368
Дата: 28.11.05 17:04:02
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




------------------
С уважением Владимир.
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Igor Korolyov

Сообщений: 34000
Дата: 28.11.05 23:21:12
Hi Vladimir!

Цитата:
Для меня он чисто как справочник проектов
Ну не знаю, тут просто порядок на диске рулит конечно если он (порядок)
есть
Цитата:
выбрал из списка и работай
А в чём принципиальная разница между File\Open или даже MODIFY PROJECT (+
MRU который можно по размеру подкрутить) в командном окне? А собственно
"настроечные" под проект действия - это работа для ProjectHook - IMHO это
самое то
А PM уже сам по себе требует чтобы его запускали из одной определённой папки
(чтоб конфиг нужный хватался) - т.е. просто по pjx в FAR уже не кликнешь (не
ну кликнуть то можно, но вот PM тогда и не запуститься сам - а руками его
пускать - радости мало)...
Хотя ВООБЩЕ идея добавляемых тулзов - это неплохая идея - просто обычно это
бывает как-то связано с используемым каркасом (пусть даже и самописным). Вот
чего мне не нравится - так это полностью меню перекоряживать - ну добавил
своё подменю, максимум два - и ограничься этим - но бывает что заносит
сильно




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
piva

Сообщений: 18600
Откуда: Курган
Дата: 29.11.05 07:06:35
Не уменя только переключатель между проектами - тем больее для каждой версии фокса свои настройки идут. Ну и управление проектом - просто я уже привык и мне чужие тулзы не очень нужны




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 29.11.05 10:53:18
Igor Korolyov писал:
Цитата:
А PM уже сам по себе требует чтобы его запускали из одной определённой папки
(чтоб конфиг нужный хватался) - т.е. просто по pjx в FAR уже не кликнешь (не
ну кликнуть то можно, но вот PM тогда и не запуститься сам - а руками его
пускать - радости мало)...
Я горд. Мой тулбар вылезет если кликнуть на pjx.
Но меня более интересует отношение к стилю написания. На работе все пишут еще отвратительней и конструктивной критики от них ожидать невозможно. Я не прошу им пользоватся, так взглянуть на код.




------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
piva

Сообщений: 18600
Откуда: Курган
Дата: 29.11.05 11:41:30
Добавляю проект - открываю кнопкой - появляется окно проекта давлю кнопку "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.
Забываешь про With\EndWith ?
Ситуаций много всяких в жизни бывает
Clear All и твоего манагера проектов как не бывало
Хватит пока ?

Вдогонку - окно упраления проектами - ContolBox=.F. а окно можно ресайзить



Отредактировано (29.11.05 11:45)


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 29.11.05 12:18:00
СПАСИБО БОЛЬШОЕ!
Наверно я дурак, но как радостно когда меня так критикуют. Посмотрю разберусь, урегулирую.

Кстати первый раз слышу что транзакции не работают со свободными таблицами. У нас есть задачи гшде еще в 5 - ке в свобдных таблицах использовались транзакции



Отредактировано (29.11.05 12:21)


------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Igor Korolyov

Сообщений: 34000
Дата: 30.11.05 03:13:32
Hi slava!

1)
Цитата:
Мой тулбар вылезет если кликнуть на pjx
Конечно нет - ты же не думаешь что я в КАЖДЫЙ config буду прописывать
_STARTUP А если его прописать только в config расположенный в папке
установки фокса, то будет работать до тех пор, пока в папке из которой я
запускаю фокс (т.е. где расположен тот 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")
5) Про метод NewID даже говорить не хочется Уж сколько раз было говорено
что НЕЛЬЗЯ так считать Либо AUTOINC пользуй (и соответственно по
версиям фокса ограничивай), либо 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
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 30.11.05 11:46:39
Игорь вы не представляете как я Вам за такой разбор полетов благодарен. Я начал изучать фокс когда перешел на работу где я и ныне работаю (уже месяцев 7). и Начал изучать с того что вел задачу сделаную не мной. Я бы не стану описывать стиль програмирования в этих задачах. Достаточно того что в некоторых поля в главных таблицах именуются по по двум буквам (например фамилия исполнителя fi и пр.) a переменные обявляется (цитата):
Publ a,b,c,d,e,f,g,h,j,k
и не удаляются после, в общем жуть.
Подсмотреть нормальный код времени и возможности действительно мало. Беру стиль из того что смотрю в цитатах с форума, и FAQ. Я не пытаюсь оправдыватся просто хочу показать что Ваш ответ (как и ответ piva) действительно очень и очень ценны.

P.S. Как приятно были удивлены мои коллеги (опыт работы некоторых до 10 лет) когда узнали что классы можно паковать...




------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата: 01.12.05 16:03:22
вот это да! они же пухнут до бесконечности после редактирования
маленький проект может сильно раздуть

Точно так же надо паковать и базы данных, если в них редактируют курсоры, например.
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Zakharov_slava
Автор

Сообщений: 2022
Откуда: Алматы
Дата: 02.12.05 11:20:46
Они создавали новый vcx и перекидывали туда все старые классы...




------------------
Требуется секретарша со знанием языка...
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Igor Korolyov

Сообщений: 34000
Дата: 03.12.05 16:18:26
Hi Zakharov_slava!

Ну что ж по сути PACK это и есть создание новой таблицы, копирование туда
"живых" (не DELETED()) записей, потом "убиение" исходной таблицы и
переименование "новой" под старое имя... Правда всё это одной командой

P.S. Стиль - это такая тонкая вещь Один будет всю жизнь писать вполне
работоспособные программы и с "Publ a,b,c,d,e,f,g,h,j,k" - а другой даже при
самом "правильном" и "идеологически выдержанном" подходе не напишет даже
телефонного справочника
Просто для большого коллектива - если стиль у всех разный, то написать
совместно программу практически нереально - тут уж по любому идёт диктат
одного человека (и его стиля).




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
RusMikle

Сообщений: 715
Откуда: Muenster
Дата: 28.12.05 20:35:54
Igor Korolyov писал(а):
Цитата:
А PM уже сам по себе требует чтобы его запускали из одной определённой папки
(чтоб конфиг нужный хватался) - т.е. просто по pjx в FAR уже не кликнешь (не
ну кликнуть то можно, но вот PM тогда и не запуститься сам - а руками его
пускать - радости мало)...
я его в своё время и делал для того чтоб не из фара или ещё откуда проекты пускать а из списка со всеми настройками пускать.
Если хочется удобства просто запускай pm.app из фара или сделай иконку на десктопе или ещё где на pm.app,
фокс стартанет уже с ним автоматом. Если хочется что б какой то проект открывался автоматом при этом есть и такая установка в свойствах проекта. Сия идея проверена уже давно и не только мной а большим коллективом программеров, были разные варианты но сошлись все на этом. PM стоит уже поставить только для того чтоб просто быстро запускать проект не лазя по папкам и не выискивая pjx файл. Хочешь в своём окне каждый проект - пожалуйста PM тому не помеха, только помощь
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
Igor Korolyov

Сообщений: 34000
Дата: 29.12.05 02:11:18
Hi RusMikle!

Проблема в том, что надо не просто настройки делать, а запускать саму
программу (чтобы создавался goApp и иже с ними) - и с этим замечательно
справляется ProjectHook. А вот "перегрузка" весьма нетривиальна, и для
своего-же спокойствия я предпочитаю полностью закрыть фокс, прежде чем
переходить к другому проекту...
P.S. Не претендую на знание какой-то скрытой истины, просто делюсь своим
опытом работы с несколькими проектами...




------------------
WBR, Igor
Ratings: 0 negative/0 positive

Re: Тулбар для работы с большим кол-м проектов
RusMikle

Сообщений: 715
Откуда: Muenster
Дата: 29.12.05 12:24:00
Igor Korolyov писал(а):
Цитата:
Hi RusMikle!
Проблема в том, что надо не просто настройки делать, а запускать саму
программу (чтобы создавался goApp и иже с ними) - и с этим замечательно
справляется ProjectHook. А вот "перегрузка" весьма нетривиальна, и для
своего-же спокойствия я предпочитаю полностью закрыть фокс, прежде чем
переходить к другому проекту...
P.S. Не претендую на знание какой-то скрытой истины, просто делюсь своим
опытом работы с несколькими проектами...

для этих целей там есть скрипты к каждому проекту, что хочешь то и создавай
и при старте проекта и при выходе из него, и.т.п.
а перегружать фокс под каждый проект не вижу никакой необходимости
CLEAR ALL все прекрасно чистит
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 8 of63  (Гостей: 7)

18.01.2021 16:48:04 exec: 0.06
Mem: 1.492 Mb

© 2000-2021 Fox Club 
Яндекс.Метрика