Отправляет email-рассылки с помощью сервиса Sendsay

Создание коммерческого ПО.

  Все выпуски  

Первый выпуск,немного размышлений о компонентах и их рациональном и использовании,


Жесть,нет правда, жесть,только что смотрел форум,увидел интересный,вопрос цитирую: "Ребят,хочу построить список документов,через TreeView запарка собственно вот в чем: у меня есть заголовок,а в него нужно встроить низподажющий список,перепробывал все неполучаетьсь?Как правильно построить таблицу,чтобы я смог отображать главный и под чиненные документы(кхе-кхе,вот только тут я догадался что понадобилось парню. прим.автора ),база данных Paradox использую BDE(весьма популярная еще вещь как не странно. прим.автора)." конец цитаты,(пропустил слезливые просьбы о помощи.).Конечно все тутже начали советовать,компоненты ,я не говорю,что использование компонентов вселенское зло,НО-увлекаться ими тоже не стоит.

 

Для осуществления сего действа,с игнорирование компонентов,мне понадобилось только две функци и так первая 1-я:

bool treesearch(AnsiString searchstr)

{
//tr Это компонент TreeView1(для тех кто не понял)
TTreeNode *search=tr->Items->GetFirstNode();
if (search)do
{
AnsiString title;
title=search->Text;
if (searchstr!=title)
{
search=search->GetNext();
}
else
{
tr->Items->AddChild(search,DBEdit1->Text);
search->ImageIndex=0;
data->typetov->Next();//тут думаю все ясно,дбедит1-это поле в котором отоброжаеться тип товара,дата документа и етс
return true;
}
}
while(search);
return false;
}

А вот теперь вторая основная функция:

void _fastcall tovgroup()
{
TTreeNode *group;
group->Text;
TTreeNode *root =tr->Items->Add(NULL,"Мои документы");
root->ImageIndex=0;
data->typetov->First();
TTreeNode *childs;
while (data->typetov->Eof!=true)//пока неконец таблицы,мы в цикле
{
if(whos->Text!=""&&DBEdit1->Text!="")//не большая проверка на пустые поля
{
int i=StrToInt(whos->Text);//а вот тут вот интересно
/*whos-это DBEdit используемый для определения главных и подчиненных окон то есть например дата документа у нас соответсвует 12 то значит i неравно 0 и мы переходим на функцию treesearch все очень и очень просто */
if (i==0)
{
tr->Items->Add(root,DBEdit1->Text);
data->typetov->Next();
}
else if(i>0)
{
treesearch(children->Text);
}
}
else
{
data->typetov->Next();
}
}
tr->Items->EndUpdate();
}

Можно конечно привести код,в божеский вид да и убрать кучу "мерзких моментов" но ведь это не сама цель.

                  Теперь можно сказать что вступление пройденно,самая первая рассылка да и еще 5-6 будет посвещянны созданию,юзабельно пользовательского интерфейса.Давайте возьмем не большой пример: программу "Торговый дом Квазар"-я не собираюсь охаивать интерфейс программы,НО это просто неужобно для пользователей,много хороших идей взято(или придуманно хе,хе) из 1С,так почему было не довести их да такой же отточенности как в 1С,не являюсь поклонником 1С-но видя ее сразу чувствуеться,что это ПО для бизнесса.

Собственно первый вывод,собрались писать ПО для бизнесса,то и пишите его для бизнесса,а не для себя,человеку-работающему в какой то сфере(магазин,казино,ресторан)-не нужны рюшечки -это не WinAmp,это программа для работы следовательно главное ее преимущество -это удобство.

             Исходя из опыта своей работы,я пришел к выводу,что-(жизнь несправелива,тьфу ты не то) излишнее замарачивание с уровнем доступа, с намеренным усложнение настройки ПО-это не есть хорошо,т.к. при заказе программы мы чаще всего обсуждаем задачи,с директорами,замдиректорами,менеджерами, работа с программой у которых будет сводиться в лучшем случае к нажатии кнопки(меню) "Отчет".

Рядовых сотрудников(бухгалтеров(их в первую очередь),менеджеров среднего звена ,складовщиков,продавцов оффициантов)попросту игнорируют-и это же приводит к отказу в дальнейшем от вашего ПО(А мне все равно,свои деньги то я получил-и не сможете не согласиться,что жить одним днем конечно хорошо,но иметь постоянный,ежемесечный заработок от саппорта программы(есть оффисы,в которые я не захаживал по три-четыре месяца исправно получая свои деньги) гораздо лучше)

Второй вывод: во-время написания программы-ориентируемся на тех людей который с ней будут работать.

 

Переходем к третьей догме:  Все что хорошо реализованно у конкурентов не только можно,но и нужно,использовать в своих программах.

Пример из жизни:  В свое время я писал программу для кафе: заказ происходил слейдующим образом,оффициант брал заказ у клиента,подбегал компьютеру, вводил свой пароль,забивал по артикулям свой заказ,заказ расформировался на бар и кухню,куда на два принтера и уходил,далее,кассир получив заказ с кухни или выполнив заказ на бар,нажамил кнопочку "Пометить как выполненный", монитор оффициантов перекрашивался в черный свет и мигала надпись с названием заказа его столиком и именем оффицианта.

Оффициант подбегал к кассиру,и забирал заказ,потом при рассчете столика он мчался опять к компьютеру,чтобы рассчитать столик и распечатать чек.

Жутко правда?А представте что такое проделовывалось не раз и не два, а миллион раз за день?

Побывав в Берлине я увидел очень интересный выход(я бы сказал гениальный)(возможность использовать для осуществления цели не только wi-fi но и bluetooth,забежал вперед),стоит точка wi-fi подключенная к однуму компьютеру(заметте 1-му),к вам потходит девушка,и оформляет заказ по средством КПК или смартфона(!),а дальнейшая схема та же.

НО согласитесь как идет экономия времени, денег,лишь изменив некоторую часть программы.

Вывод третий(и в этой рассылке последний):Не стестяться,брать хорошие идеи,не выдумывать "велосипеды"(это вообще жесть,т.к. как потеря времени для нас это потеря сроков,следственно времени и денег).Брать из продуктов конкуретов только самое лучшее.

 

Буду надеяться,смог дать вам что-то новое.

С уважением, QsxcFt.

программист компании. "JeGe Studio"


В избранное