FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9249
Вход

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

Взгляд на класс календаря с бюрократической точки зрения.

Из всего иногда можно извлечь пользу. Даже из вещей и людей , которые на первый взгляд неприятны. Скажем бюрократ , я считаю , что он - один из основных и лучших источников вдохновения и свежих идей для программиста. Кто , как ни бюрократ , любит все учитывать, подсчитывать и вообще все записывать и все знать. А кто как ни программист поможет ему это сделать. Особенно , если не безвозмезно, а за зарплату . Ну вот какой толк вообще может быть от календаря. Уж сколько классов календарей написано и сколько activex календарей. А толку от них -только выбрать дату. Нет, мой прежний босс в 1997 году , золотая голова,
Павел Петрович Бугров говорит , чтобы завтра работа каждого работника в часах, числах накладных, проводках и всем , чего бы он ни делал на рабочем месте , регистрировалась . Чтобы приход на рабочее место учитывался и чтобы это было видно на календаре и учитывалось. У меня уже и люди в отделах, кому я поручу эту самую регистрацию, есть, и приказ я по фирме заготовил. Этап второй- чтобы это и на расчете зарплаты было видно. Срок , как обычно , до завтрашней зари, а лучше до вчера. "Слушаю и повинуюсь" - сказала золотая рыбка и бросилась к клавиатуре искать в интернетовской сети что нибудь подходящее. Классов с календарями полно, но с нужными свойствами - ничего. Ну чтоже .

Возьмем контейнер и заполним его label и textbox числом 7* 6 =42 штуки , одни для даты, другие для ввода учитываемого параметра. На втором классе вместо текстовых коробок -checkbox для регистрации явки или факта исполнения. Сверху на первым рядом названия дней недели, над ними комбобокс для выбора недели с кодом в init
t=date()
for i =1 to 10
m=gomonth(t,i-5)
g=str(year(m))
g1=month(m)
do case
case g1=1
g2=" Январь"
case g1=2
g2=" Февраль"
case g1=3
g2=" Март"
case g1=4
g2=" Апрель"
case g1=5
g2=" Май"
case g1=6
g2=" Июнь"
case g1=7
g2=" Июль"
case g1=8
g2=" Август"
case g1=9
g2=" Сентябрь"
case g1=10
g2=" Октябрь"
case g1=11
g2=" Ноябрь"
case g1=12
g2=" Декабрь"
endcase
if i=5
h=g+g2
endif
this.additem(g+g2)
endfor
this.displayvalue=h
this.value=5
this.refresh
this.parent.st
и кодом click- st method класса
T=date()
this.dm=month(gomonth(t,this.cmb1.value-5))
this.dy=year(gomonth(t,this.cmb1.value-5))
m=gomonth(t,this.cmb1.value-5)
g=(year(m))
g1=month(m)
v="1/"+str(g1)+"/"+str(g)
dt=ctod(v)
IF dow(dt)<>1
b=dow(dt)-2
dt1=dt-b
ELSE
dt1=dt-6
ENDIF
k=0
FOR i=1 to 42
yy="this.tt"+alltrim(str(i))
zz="this.tx"+alltrim(str(i))
od=eval(yy)
ov=eval(zz)
WITH od
.value=day(dt1+i-1)
ENDWITH
WITH ov
.value=0
ENDWITH
m=day(dt1+i-1)
***************************
IF m=1 and k=1
k=2
ENDIF
************************
IF m=1 and k=0
ov=eval(zz)
WITH ov
.visible=.t.
ENDWITH
this.ibeg=i
k=1
ENDIF
*******************************
IF m<>1 and (k=0 or k=2)
ov=eval(zz)
WITH ov
.visible=.f.
ENDWITH
ENDIF
***************************
IF m<>1 and k=1
ov=eval(zz)
WITH ov
.visible=.t.
ENDWITH
this.iend=i
this.de=m
ENDIF
****************************
*******************************
IF m=1 and ( k=2)
ov=eval(zz)
WITH ov
.visible=.f.
ENDWITH
ENDIF
*******************************
ENDFOR
this.refresh
ss=alltrim(str(1))+'/'+alltrim(str(this.dm))+'/'+alltrim(str(this.dy))
aa=alltrim(str(this.de))+'/'+alltrim(str(this.dm))+'/'+alltrim(str(this.dy))
this.db=ctod(ss)
this.ds=ctod(aa)

Ну вот . Кликаешь комбобокс и подсказки дат располагаются над полями ввода . Сами поля ввода очищаются.
Изобразим теперь таблицу для хранения с 31 полем и ключом сотрудника. Таким же кодом автоматизируем подключение свойства controlsource текстовых коробок ввода к полям таблицы . И все готово.

Ну вот , а теперь загадка. Какой отдел одним из первых подвергся регистрации своей работы? Угадайте с трех раз Ну конечно отдел автоматизации. Но разве этот отдел такого боится, напишем таймер для правильного заполнения календаря и будем работаь дальше.

Русский Фокс программист и в огне не горит и в бюрократии не тонет.

Владимир Журавлев



Вернуться к списку статей






© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика