powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / выпадающий календарь
34 сообщений из 34, показаны все 2 страниц
выпадающий календарь
    #35712042
Буу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Расскажите пожалуйста по порядку как создать выпадающий календарь. Начнем с того, что у меня есть DW free form, где находится поле, из которого должен выпадать календарь. Что делать дальше? никак не разберусь...
...
Рейтинг: 0 / 0
выпадающий календарь
    #35713009
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой РВ?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35713238
Буу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PB 8.0.1. Build 8004
...
Рейтинг: 0 / 0
выпадающий календарь
    #35713520
edmikeca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PFC используете?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35713612
Буу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так вот в этом всё и дело, что я не понимаю откуда взять pfc. где оно находится?
это не то случайно "add target" и загружать в проект библиотеки? если это так, то что оттуда надо брать?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35713823
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буутак вот в этом всё и дело, что я не понимаю откуда взять pfc. где оно находится?
это не то случайно "add target" и загружать в проект библиотеки? если это так, то что оттуда надо брать?
Если PFC нужно только для календарика, то использовать его не разумно. Лучше взять котовый, воспользовавшись поиском по форуму, например тынц .
...
Рейтинг: 0 / 0
выпадающий календарь
    #35714153
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот виндовы стандартный календарь
давно пользуюсь и доволен
...
Рейтинг: 0 / 0
выпадающий календарь
    #35718766
Буу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо большое :)
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722269
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот если бы вы ещё добавили код , как запускать эту машину.
Мне, как-то удалось собрать эти объекты
nvo_comctl_datetime
uo_comctl_datetime

а также функции
wf_getdate
wf_setdate

а вот как чо с этого сдоить, вопрос, знаете ли.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722394
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В окно на котором будет располагатся uo_comctl_datetime
надо добавить ф-ии

wf_getdate
wf_setdate

Style у обьекта на окне можно ставить
1174405122 (это с галочкой будет) или 1174405120 (без галочки)


берем дату с обьекта
cdate = wf_getdate(uo_3) //uo_3 - это обьект uo_comctl_datetime

ставим дату в обьект
wf_setdate(uo_3,cdate)

ВСЕ
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722642
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот, сразу не въехал, что объект визуальный, даже с Вашего кода подымал его как невидимый, да, всё нормально.
Вот час бодаюсь с Integration Service на пустяке, спасибо, мир не без добрых людей.
Ещё кто-то смеет хлебало на PB раззевать.
Но, если чо нe так, я к Вам снова приду.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722694
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, по вашей рекомендации повесил кнопку, на клике прописал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
date cdate
uo_comctl_datetime uo_3

uo_3=create uo_comctl_datetime
cdate = parent.wf_getdate(uo_3)

messagebox('',string(cdate,'dd-mm-yyyy'))

destroy uo_3
А получаю пустую строку, влом немного.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722729
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё доехал, старый я осёл, вопрос снят, проще надо товарищи , проще , без интегралов.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35722739
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственно что, ловите ли евент смены даты, если да, то как ?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35724538
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никогда не ловил ивент смены даты -а зачем?
рядом вешаю всегда кнопочку *ОК*
потому как юзеры часто ошибаюццо - луче пусть нажмут лишнюю педальку
...
Рейтинг: 0 / 0
выпадающий календарь
    #35726643
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, для понта.
А этот календарь, есть на всех машинах,а то так прилепишь его, а он возьмёт да завалит всю апликашу собственным криэйтом.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35730507
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть на всех, включая 98 винду даже.
стандартный он
...
Рейтинг: 0 / 0
выпадающий календарь
    #35738595
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чета не догоняю как эти функции правильно прилепить
...
Рейтинг: 0 / 0
выпадающий календарь
    #35744996
MegaRolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roleksникогда не ловил ивент смены даты -а зачем?
рядом вешаю всегда кнопочку *ОК*
потому как юзеры часто ошибаюццо - луче пусть нажмут лишнюю педальку
Зачем? Например у меня на форме дат - штук десять, помимо прочих полей. Юзер заполняет форму, прыгая по полям ТАБом, а я не могу даже фокус нормально поставить на поле, сделанное из этого объекта :( Глобально же проблема в том, как отловить момент, когда дата была изменена? У нормальных объектов есть для этого event Modified(), а тут как быть? И как включить это поле в общий порядок обхода полей? TabOrder, из за того, что фокус не становится, не помогает. В общем, что-то не получается у меня привинтить стандартные события к этому объекту. Кому-то удалось?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35745043
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaRolex Глобально же проблема в том, как отловить момент, когда дата была изменена? Кому-то удалось?
Ты знаешь прочитал и стало интересно, действительно отловить стандартным событием невозможно.
Заметил одну вещь при нажатии ЛКП на календарике происходит деактивация окна на котором объект, а при выборе даты активируется, вот и решил использовать Event ID родительского окна объекта Activate.
Дальнейшая реализация.
1. Создаешь Instance Variables Boolean ib_check
2. В событии Activate пишешь
if ib_check then твой_евент_на_смену_даты()
ib_check = true

Зачем ib_check = true при первом открытии окна произойдет Activate, а ib_check = false и событие не отработается, там же произойдет ib_check = true и при последующем Activate будет отрабатыватся твой евент. Подводные камни: Activate произойдет не только при опен окна но и при переключениях между окнами но переменой ib_check можно управлять. Это экспромт, сам не использовал. Попробую может, что и получится. Табом не пробовал у меня только один объект, сам факт сделать можно все, что угодно. Удачи.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35745216
MegaRolex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxATC,
мда... такую особенность не заметил, надо будет завтра вечерком попробовать порыть в эту сторону. Предложенная реализация не очень удобна потому что дат много, а не одна. Но идея интересная! Хотелось бы ещё инкапсулировать всё это дело внутрь объекта ( я завернул предложенный Roleks'ом код в отдельный объект, а то как то неаккуратненько пихать в окно методы, которые по сути к элементу управления относятся). До сих пор я пытался как-то через событие Other выкрутиться, но по нему все изменения отловить не получается. Нутром чую, что надо копать внутрь самого исходного компонента, но не силён в ковырянии потрохов винды.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35745241
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaRolex,

Можешь порыть в этом направлении. Данный выпадающий календарь и есть самое настоящее окно для винды и поэтому ведет себя как окно со всеми вытекающими отсюда...
Class Name - SysMonthCal32
Window Styles - ws_popup.
Как видишь обычное всплывающее окно и табом между окнами не проклацать, только с выкручиванием API. Удачи.

PS: Если, что откопаешь не забудь поделиться с форумом, интересно ведь.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35745881
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно напомнить вопрос о том как правильно эти функции к календарю прикрутить?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35746070
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roleks
берем дату с обьекта
cdate = wf_getdate(uo_3) //uo_3 - это обьект uo_comctl_datetime

ставим дату в обьект
wf_setdate(uo_3,cdate)

ВСЕ

Написано уже. Читай выше.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35746850
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
выпадающий календарь
    #35746852
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
выпадающий календарь
    #35748284
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxATCroleks
берем дату с обьекта
cdate = wf_getdate(uo_3) //uo_3 - это обьект uo_comctl_datetime

ставим дату в обьект
wf_setdate(uo_3,cdate)

ВСЕ

Написано уже. Читай выше.
я знаю что есть эти две функции: wf_getdate и wf_setdate. я не понимаю как их правильно со всеми параметрами вставить в то окно на котором будет располагаться календарь.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35748535
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

В моём случае of_gatdate() это wf_getdate()
Удачи.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35750736
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxATCImperous,
В моём случае of_gatdate() это wf_getdate()
Удачи.
тут понятно, спасибо.
а вот куда теперь всунуть вот это:
Код: plaintext
1.
2.
3.
forward prototypes
	public function date wf_getdate (ref uo_comctl_datetime auodatetime)
	public function boolean wf_setdate (ref uo_comctl_datetime auodatetime, date cdate)
end prototypes
?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35751334
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,
А не надо ни куда вот это пихать, а просто выбери дату в календаре
и нажми кнопку где выполняется скрипт
cdate = wf_getdate(uo_3) //uo_3 - это обьект uo_comctl_datetime
и получишь дату с календаря cdate вот её и надо впихивать для своих нужд куды хошь.
Удачи!
...
Рейтинг: 0 / 0
выпадающий календарь
    #35751585
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxATCImperous,
А не надо ни куда вот это пихать, а просто выбери дату в календаре
и нажми кнопку где выполняется скрипт
cdate = wf_getdate(uo_3) //uo_3 - это обьект uo_comctl_datetime
и получишь дату с календаря cdate вот её и надо впихивать для своих нужд куды хошь.
Удачи!
да, точно, работает, опять пасиба!
...
Рейтинг: 0 / 0
выпадающий календарь
    #35896409
Vivka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто нибуть придумал как сделать так чтоб на него фокус попадал когда Юзер заполняет форму прыгая по полям ТАБом?
И как сделать чтоб отоброжаласть нуловая дата типа 00/00/0000?
...
Рейтинг: 0 / 0
выпадающий календарь
    #35896618
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VivkaИ как сделать чтоб отоброжаласть нуловая дата типа 00/00/0000?
В данном объекте ни как.
...
Рейтинг: 0 / 0
выпадающий календарь
    #35897496
maxATC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кое что сделать можно.
Код: plaintext
1.
2.
3.
Создал EditMask control 
Propertis: Name = em_date
Mask = ‘dd/m/yyyy’
BorderStyle = StyleBox!
Наложил на uo_select_date, чтобы закрыло только цифирки, назначил ему TabOrder.

В контроле uo_select_date в евенте other(wparm, lparm), обратил внимание, что
при выборе даты из выпадающего календаря lparm принимает значения 1239776,
1239716, 1239740. В нашем случае я выбрал для отслеживания значение 1239740
(просто от балды).
В евенте other(wparm, lparm) вставляем скрипт
Код: plaintext
1.
2.
3.
4.
if lparam =  1239740  then
	nvo_comctl_datetime	lnvoDateTime
	This.of_GetObject( lnvoDateTime )
	em_date.Text = String(lnvoDateTime.of_GetDateTime(),'dd.mm.yyyy')
end if

Далее не пробовал, но сделать надо, чтобы красиво было:
В евенте modified() controla em_date добавить скрипт на вызов функции установки даты
wf_setdate (ref uo_comctl_datetime auodatetime, date(em_date.Text)), чтобы при выборе последующий даты в календарике отображалась эта дата.

Ну примерно так, обход табом есть, 00/00/0000 установит можно.
Как реализация данного, мною не использовалась и не тестировалась в проектах, так что за баги не отвечаю.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / выпадающий календарь
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]