On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 293
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 07.04.16 22:12. Заголовок: CALENDAR с отметкой дат ?


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



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 17 [только новые]


администратор




Пост N: 859
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 10:47. Заголовок: Softlog86 пишет: го..


Softlog86 пишет:

 цитата:
готовое решение или 'полуфабрикат'


готового нет, а полуфабрикат - TSBrowse по массиву 7х5 . Заполняй датами и крась как хочешь

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 294
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.04.16 12:32. Заголовок: Там ещё и календарь ..


Там ещё и календарь встраивать ... с днями недели , 30/31 числа и тд ....


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 860
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 12:38. Заголовок: Softlog86 пишет: Та..


Softlog86 пишет:

 цитата:
Там ещё и календарь встраивать ... с днями недели , 30/31 числа и тд ....


Ну ты лентяй )
Стало интересно за пол часа накидал. Если есть желание - продолжай дальше сам
для сборки нужна hbnf.lib
отметка - даблклик или энтер
 

#include "minigui.ch"
#include "tsbrowse.ch"

STATIC aFont := {}

MEMVAR oBrw_1

FUNCTION Main()
LOCAL i := 0, j := 0, n := 0
LOCAL dFirst := Date()
LOCAL aDay := {"ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ", "ВС"}


SET DATE TO GERMAN
FT_DATECNFG(, 2 )


DEFINE WINDOW Form_0 ;
At 0, 0 ;
WIDTH 600 ;
HEIGHT 600 ;
TITLE 'TsBrowse calendar' ;
ICON 'lupa.ico' ;
MAIN ;
NOMAXIMIZE ;
NOSIZE

ON KEY ESCAPE ACTION ThisWindow.Release

END WINDOW


DEFINE TBrowse oBrw ;
AT GetProperty("Form_0", 'Row') + 30, GetProperty("Form_0", 'Col') + 15 ;
OF Form_0 ;
WIDTH GetProperty("Form_0", 'Width') - 38 ;
HEIGHT GetProperty("Form_0", 'Height') - 168 ;
FONT "Arial" ;
SIZE 9 ;
GRID

END TBROWSE


oBrw:SetArray( Array(5,7), TRUE)

__objAddData(oBrw, 'aMark' )
__objAddData(oBrw, 'aDate' )

oBrw:aMark := Array(5,7)
oBrw:aDate := Array(5,7)
dFirst := FT_ACCTWEEK(BOM(Date()) )[2]

n := 0
for i := 1 To 5
For j := 1 TO 7
oBrw:aDate[ i ][ j ] := dFirst + n
oBrw:aMark[ i ][ j ] := FALSE
n++
end
end


oBrw:nHeightCell := 80
oBrw:nHeightHead := 30
oBrw:lNoHScroll := .T.
oBrw:nFreeze := 7
oBrw:lLockFreeze := FALSE
oBrw:lNoChangeOrd := TRUE


oBrw:SetColor( { 3 }, { { || RGB(255,242,0) } }, )
oBrw:SetColor( { 4 }, { { || { RGB( 43, 189, 198 ), RGB(3,113,160) } } }, )



oBrw:Setcolor( { 6 }, { -RGB(220, 0, 0) }, )

oBrw:Setcolor( { 2 }, { { || IF( IsMark(1) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 1 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(2) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 2 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(3) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 3 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(4) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 4 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(5) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 5 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(6) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 6 )
oBrw:Setcolor( { 2 }, { { || IF( IsMark(7) , RGB(200, 255, 200), RGB(240, 255, 240)) } }, 7 )


oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][1] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 1 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][2] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 2 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][3] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 3 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][4] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 4 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][5] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 5 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][6] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 6 )
oBrw:Setcolor( { 1 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][7] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 7 )

oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][1] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 1 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][2] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 2 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][3] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 3 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][4] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 4 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][5] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 5 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][6] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 6 )
oBrw:Setcolor( { 5 }, { { || IF( Month( oBrw:aDate[oBrw:nAt][7] ) == Month( date() ) , RGB(0, 0, 0), RGB(200, 200, 200)) } }, 7 )



for i := 1 To 7
oBrw:aColumns[ i ]:cHeading := aDay[ i ]
oBrw:SetColSize( i, 80)
oBrw:aColumns[ i ]:bData := &( "{|| GetDate( " + NTOC( i ) + ")}")
oBrw:aColumns[ i ]:nAlign := DT_CENTER
oBrw:aColumns[ i ]:lEdit := TRUE
oBrw:aColumns[ i ]:bPrevEdit := { || Mark() , .F.}
end


CENTER WINDOW Form_0
ACTIVATE WINDOW Form_0

RETURN Nil

FUNC GetDate( nCol )
RETURN DAY(oBrw:aDate[oBrw:nAt][nCol] )


Func Mark(i)
oBrw:aMark[oBrw:nAt][oBrw:nCell] := !oBrw:aMark[oBrw:nAt][oBrw:nCell]
oBrw:refresh(FALSE)
RETURN NIL

Func IsMark(n)
RETURN oBrw:aMark[oBrw:nAt][n]



Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 295
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.04.16 12:56. Заголовок: Это было не самое ва..


Это было не самое важное .... подождёт . Так , на будущее .
За такую работу - респектище !


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5577
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.16 12:59. Заголовок: Haz Слегка повело т..


Haz
Слегка повело текст где [ i ] , у тебя без пробелов.
Без них выглядит так ...опа

ЗЫ
Все i в скобках скушало.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 861
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 13:02. Заголовок: Dima пишет: Все i в..


Dima пишет:

 цитата:
Все i в скобах скушало.


Понатыкал пробелов , спасиб !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5578
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.04.16 13:06. Заголовок: Haz пишет: Понатыка..


Haz пишет:

 цитата:
Понатыкал пробелов


Но не везде. Поправил.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 296
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.04.16 13:49. Заголовок: Протестировал ... гл..


Протестировал ... глючит немного ..... Кликаю на ячейку - перескакивает не на неё а на последнюю в том ряду . Иногда попадает туда куда нужно ....
Может есть смысл добавить функцию MARK/UNMARK в контрол MONTHCALENDAR ? Ну и чтоб был массив отмеченных дат .
Понял , что это невозможно .... Контрол сделан на основе виндового .



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 862
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 13:53. Заголовок: Softlog86 пишет: Пр..


Softlog86 пишет:

 цитата:
Протестировал ... глючит немного .....


поппробуй мою сборку , у меня не скачет
https://yadi.sk/d/Xzyj5fPuqqQsq

или ты про правый клик ??? так отключи его в бровсе
вот это закоменти
// oBrw:nFreeze := 7

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 863
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 14:12. Заголовок: а лучше фризу остави..


а лучше фризу оставить
oBrw:nFreeze := 7
и добавить
oBrw:lNoMoveCols := .T.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 297
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.04.16 14:16. Заголовок: Haz Ваш вариант рабо..


Haz Ваш вариант работает корректно . А .PRG будет ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 864
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 14:19. Заголовок: Softlog86 пишет: А ..


Softlog86 пишет:

 цитата:
А .PRG будет ?



Окончательный пример, при смене месяца и года отметки стираются.
Пример создан просто для демонстрации , отметки хранятся в самом объекте.
В реальном применении можно их хранить в базе или в INI кто как захочет
Отметить можно даблкликом или энтером

PRG
https://yadi.sk/d/sfgyn0lzqqZpV
EXE
https://yadi.sk/d/0eAz1u--qqZpG
BAT
https://yadi.sk/d/kis15hO_qqTZ8



Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 933
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.04.16 16:11. Заголовок: Игорь :sm36: мален..


Игорь
маленькая правка
 
Func Mark(i)
If Month( oBrw:aDate[oBrw:nAt][oBrw:nCell] ) == Month( oBrw:dDate )
oBrw:aMark[oBrw:nAt][oBrw:nCell] := !oBrw:aMark[oBrw:nAt][oBrw:nCell]
oBrw:DrawSelect()
// oBrw:refresh(FALSE)
EndIf
RETURN NIL


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 865
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.04.16 16:51. Заголовок: SergKis пишет: мале..


SergKis пишет:

 цитата:
маленькая правка


Спасибо, так оптимальнее


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 919
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.04.16 12:52. Заголовок: Haz пишет: Спасибо,..


Haz пишет:

 цитата:
Спасибо, так оптимальнее


Благодарю за отличный пример!
Если нет возражений, то добавлю его в новую сборку с переводом названий дней недели на английский

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 873
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.04.16 13:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Если нет возражений, то добавлю его в новую сборку с переводом названий дней недели на английский


Возражений нет т.к. это именно пример . До практического использования еще далек

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 298
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 09.04.16 16:45. Заголовок: Так и напрашивается ..


Так и напрашивается контрол :) . Хорошая визуализация по дням недели .
Колонки с датами не всегда удобно , особенно когда дело касается каких-то недельных или ежемесячных операций/сделок и прочих событий .

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 168
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет